How to use System.Drawing in .NET Core?

You might probably know that System.Drawing, a popular API for implementation of graphic related tasks, is not a part of .NET Core. Originally, .NET Core is designed as a cloud framework, which does not include many nont cloud related APIs.

On the other side .NET Core is cross platform framework, which does not include any OS specific APIs, like Active Directory on Windows. More over, .NET Core also does not include APIs like ConfigurationManager, which is a part of .NET framework.

In my previous post I have described how such APIs can be used withing .NET Core and .NET standard application.

To make this possible, there is a metapackage called Windows Compatibility Pack. However, this metapackage includes many, many Windows related APIs (distributed as packages). Inside of this meta-package, there is a System.Drawing.Common package.

To use a drawing features in .NET Core add a reference to following nuget package:

 <PackageReference Include="System.Drawing.Common" Version="4.5.0-preview1-**" >

After that you will be able to do code as following one:

int x = 100;
Image image = new Bitmap(2000, 1024);

Graphics graph = Graphics.FromImage(image);

graph.Clear(Color.Azure);

Pen pen = new Pen(Brushes.Black);

graph.DrawLines(pen, new Point[] { new Point(10,10), new Point(800, 900) });

graph.DrawString("Hello drawing from .NET Core :)", 
new Font(new FontFamily("DecoType Thuluth"), 20,  FontStyle.Bold), 
Brushes.Blue, new PointF(150, 90));

image.Save("graph.jpeg", System.Drawing.Imaging.ImageFormat.Png);

After you run this code, you will see following picture:

Here is the list of currentlly supported font families:

AGA Arabesque
AGA Arabesque Desktop
Agency FB
Akhbar MT
Algerian
Arial
Arial Black
Arial Narrow
Arial Rounded MT Bold
Bahnschrift
Bahnschrift Light
Bahnschrift SemiBold
Bahnschrift SemiLight
Baskerville Old Face
Bauhaus 93
Bell MT
Berlin Sans FB
Berlin Sans FB Demi
Bernard MT Condensed
Blackadder ITC
Bodoni MT
Bodoni MT Black
Bodoni MT Condensed
Bodoni MT Poster Compressed
Bold Italic Art
Book Antiqua
Bookman Old Style
Bookshelf Symbol 7
Bradley Hand ITC
Britannic Bold
Broadway
Brush Script MT
Calibri
Calibri Light
Californian FB
Calisto MT
Cambria
Cambria Math
Candara
Castellar
Centaur
Century
Century Gothic
Century Schoolbook
Chiller
Colonna MT
Comic Sans MS
Consolas
Constantia
Cooper Black
Copperplate Gothic Bold
Copperplate Gothic Light
Corbel
Courier New
Curlz MT
DecoType Naskh
DecoType Naskh Extensions
DecoType Naskh Special
DecoType Naskh Swashes
DecoType Naskh Variants
DecoType Thuluth
Diwani Bent
Diwani Letter
Diwani Outline Shaded
Diwani Simple Outline
Diwani Simple Outline 2
Diwani Simple Striped
Dosis
Dubai
Dubai Light
Dubai Medium
Ebrima
Edwardian Script ITC
Elephant
Engravers MT
Eras Bold ITC
Eras Demi ITC
Eras Light ITC
Eras Medium ITC
Farsi Simple Bold
Farsi Simple Outline
Felix Titling
Footlight MT Light
Forte
Franklin Gothic Book
Franklin Gothic Demi
Franklin Gothic Demi Cond
Franklin Gothic Heavy
Franklin Gothic Medium
Franklin Gothic Medium Cond
Freestyle Script
French Script MT
FZShuTi
FZYaoTi
Gabriola
Gadugi
Garamond
Georgia
Gigi
Gill Sans MT
Gill Sans MT Condensed
Gill Sans MT Ext Condensed Bold
Gill Sans Ultra Bold
Gill Sans Ultra Bold Condensed
Gloucester MT Extra Condensed
Goudy Old Style
Goudy Stout
Haettenschweiler
Harlow Solid Italic
Harrington
High Tower Text
HoloLens MDL2 Assets
Impact
Imprint MT Shadow
Informal Roman
Italic Outline Art
Javanese Text
Jokerman
Juice ITC
Kristen ITC
Kufi Extended Outline
Kufi Outline Shaded
Kunstler Script
Lato
Lato Black
Led Italic Font
Leelawadee UI
Leelawadee UI Semilight
LiSu
Lucida Bright
Lucida Calligraphy
Lucida Console
Lucida Fax
Lucida Handwriting
Lucida Sans
Lucida Sans Typewriter
Lucida Sans Unicode
Magneto
Maiandra GD
Malgun Gothic
Malgun Gothic Semilight
Marlett
Matura MT Script Capitals
Microsoft Himalaya
Microsoft JhengHei
Microsoft JhengHei Light
Microsoft JhengHei UI
Microsoft JhengHei UI Light
Microsoft New Tai Lue
Microsoft Office Preview Font
Microsoft PhagsPa
Microsoft Sans Serif
Microsoft Tai Le
Microsoft YaHei
Microsoft YaHei Light
Microsoft YaHei UI
Microsoft YaHei UI Light
Microsoft Yi Baiti
MingLiU-ExtB
MingLiU_HKSCS-ExtB
Mistral
Modern No. 20
Mongolian Baiti
Monotype Corsiva
Monotype Koufi
Montserrat
MS Gothic
MS Office Symbol (de-de) Bold
MS Office Symbol (de-de) Light
MS Office Symbol Extralight
MS Office Symbol Regular
MS Office Symbol Semibold
MS Office Symbol Semilight
MS Outlook
MS PGothic
MS Reference Sans Serif
MS Reference Specialty
MS UI Gothic
MT Extra
Mudir MT
MV Boli
Myanmar Text
Niagara Engraved
Niagara Solid
Nirmala UI
Nirmala UI Semilight
NSimSun
OCR A Extended
Old Antic Bold
Old Antic Decorative
Old Antic Outline
Old Antic Outline Shaded
Old English Text MT
Onyx
Oswald
Palace Script MT
Palatino Linotype
Papyrus
Parchment
Perpetua
Perpetua Titling MT
Playbill
PMingLiU-ExtB
Poor Richard
Pristina
PT Bold Arch
PT Bold Broken
PT Bold Dusky
PT Bold Heading
PT Bold Mirror
PT Bold Stars
PT Separated Baloon
PT Simple Bold Ruled
Rage Italic
Ravie
Rockwell
Rockwell Condensed
Rockwell Extra Bold
Script MT Bold
Segoe MDL2 Assets
Segoe Print
Segoe Script
Segoe UI
Segoe UI Black
Segoe UI Emoji
Segoe UI Historic
Segoe UI Light
Segoe UI Semibold
Segoe UI Semilight
Segoe UI Symbol
Showcard Gothic
Simple Bold Jut Out
Simple Indust Outline
Simple Indust Shaded
Simple Outline Pat
SimSun
SimSun-ExtB
Sitka Banner
Sitka Display
Sitka Heading
Sitka Small
Sitka Subheading
Sitka Text
Snap ITC
Source Sans Pro
Source Sans Pro Black
Source Sans Pro Semibold
STCaiyun
Stencil
STFangsong
STHupo
STKaiti
STLiti
STSong
STXihei
STXingkai
STXinwei
STZhongsong
Sylfaen
Symbol
Tahoma
Tempus Sans ITC
Times New Roman
Trebuchet MS
Tw Cen MT
Tw Cen MT Condensed
Tw Cen MT Condensed Extra Bold
Verdana
Viner Hand ITC
Vivaldi
Vladimir Script
Webdings
Wide Latin
Wingdings
Wingdings 2
Wingdings 3
YouYuan
Yu Gothic
Yu Gothic Light
Yu Gothic Medium
Yu Gothic UI
Yu Gothic UI Light
Yu Gothic UI Semibold
Yu Gothic UI Semilight