示例#1
0
 private void DrawStringGDIPlus(Color color, FontConfig font, int x, int y, string text)
 {
     PrepareGraphics();
     PrepareDefaultStringFormat();
     GdiPlusAPI.CheckStatus(GdiPlusAPI.GdipCreateFontFamilyFromName(font.FontFamily, IntPtr.Zero, out var fontFamilyPtr));
     try
     {
         FontStyle fontStyle = GdiPlusAPI.GetFontStyle(font);
         GdiPlusAPI.CheckStatus(GdiPlusAPI.GdipCreateFont(fontFamilyPtr, font.Size, fontStyle, Unit.UnitPixel, out var fontPtr));
         try
         {
             GdiPlusAPI.CheckStatus(GdiPlusAPI.GdipCreateSolidFill(color.ToArgb(), out var brush));
             try
             {
                 RectF rect = new RectF(x, y, 0, 0);
                 GdiPlusAPI.GdipDrawString(graphics, text, text.Length, fontPtr, ref rect, defaultStringFormat, brush);
             }
             finally
             {
                 GdiPlusAPI.CheckStatus(GdiPlusAPI.GdipDeleteBrush(brush));
             }
         }
         finally
         {
             GdiPlusAPI.CheckStatus(GdiPlusAPI.GdipDeleteFont(fontPtr));
         }
     }
     finally
     {
         GdiPlusAPI.CheckStatus(GdiPlusAPI.GdipDeleteFontFamily(fontFamilyPtr));
     }
 }
示例#2
0
 private void FillRectangleGDIPlus(Color color, int x, int y, int width, int height)
 {
     PrepareGraphics();
     GdiPlusAPI.CheckStatus(GdiPlusAPI.GdipCreateSolidFill(color.ToArgb(), out var brush));
     try
     {
         GdiPlusAPI.CheckStatus(GdiPlusAPI.GdipFillRectangleI(graphics, brush, x, y, width, height));
     }
     finally
     {
         GdiPlusAPI.CheckStatus(GdiPlusAPI.GdipDeleteBrush(brush));
     }
 }