drawing.pp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. {$mode objfpc}{$h+}
  2. program Drawing;
  3. uses classes, sysutils,
  4. FPImage, FPCanvas, FPImgCanv, ftFont,
  5. FPWritePNG, FPReadPNG;
  6. const
  7. MyColor : TFPColor = (Red: $7FFF; Green: $0000; Blue: $FFFF; Alpha: alphaOpaque);
  8. procedure DoDraw;
  9. var canvas : TFPcustomCAnvas;
  10. ci, image : TFPCustomImage;
  11. writer : TFPCustomImageWriter;
  12. reader : TFPCustomImageReader;
  13. f : TFreeTypeFont;
  14. begin
  15. f:=Nil;
  16. image := TFPMemoryImage.Create (100,100);
  17. ci := TFPMemoryImage.Create (20,20);
  18. Canvas := TFPImageCanvas.Create (image);
  19. Writer := TFPWriterPNG.Create;
  20. reader := TFPReaderPNG.Create;
  21. with TFPWriterPNG(Writer) do
  22. begin
  23. indexed := false;
  24. wordsized := false;
  25. UseAlpha := false;
  26. GrayScale := false;
  27. end;
  28. try
  29. // ci.LoadFromFile ('test.png', reader);
  30. with Canvas as TFPImageCanvas do
  31. begin
  32. brush.FPcolor:=colwhite;
  33. brush.style:=bsSolid;
  34. pen.mode := pmCopy;
  35. pen.style := psSolid;
  36. pen.width := 1;
  37. pen.FPColor := colred;
  38. with pen.FPColor do
  39. red := red div 4;
  40. Ellipse (10,10, 90,90);
  41. pen.style := psDashDot;
  42. pen.FPColor := colred;
  43. HashWidth := 10;
  44. Ellipse (10,10, 90,90);
  45. with pen.FPColor do
  46. begin
  47. red := red div 2;
  48. green := red div 4;
  49. blue := green;
  50. end;
  51. pen.style := psSolid;
  52. RelativeBrushImage := true;
  53. {
  54. brush.image := ci;
  55. brush.style := bsimage;
  56. with brush.FPColor do
  57. green := green div 2;
  58. Ellipse (11,11, 89,89);
  59. }
  60. brush.style := bsSolid;
  61. brush.FPColor := MyColor;
  62. pen.style := psSolid;
  63. pen.width := 3;
  64. pen.FPColor := colSilver;
  65. ellipse (30,35, 70,65);
  66. pen.width := 1;
  67. pen.FPColor := colCyan;
  68. ellipseC (50,50, 1,1);
  69. InitEngine;
  70. F:=TFreeTypeFont.Create;
  71. F.Angle:=StrToFloatDef(ParamStr(1),0);
  72. Font:=F;
  73. {$IFDEF UNIX}
  74. Font.Name:='/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf';
  75. {$ELSE}
  76. // On windows, this should be present
  77. Font.Name:='arial.ttf';
  78. {$ENDIF}
  79. Font.Size:=10;
  80. Font.FPColor:=colWhite;
  81. // Font.Orientation:=StrToIntDef(ParamStr(1),0);
  82. Canvas.TextOut(10,90,'abc');
  83. end;
  84. writeln ('Saving to "DrawTest.png" for inspection !');
  85. image.SaveToFile ('DrawTest.png', writer);
  86. finally
  87. F.Free;
  88. Canvas.Free;
  89. image.Free;
  90. writer.Free;
  91. ci.free;
  92. reader.Free;
  93. end;
  94. end;
  95. begin
  96. // DefaultFontPath := '/usr/share/fonts/truetype/ttf-dejavu/';
  97. DoDraw;
  98. end.