drawing.pp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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. image := TFPMemoryImage.Create (100,100);
  16. ci := TFPMemoryImage.Create (20,20);
  17. Canvas := TFPImageCanvas.Create (image);
  18. Writer := TFPWriterPNG.Create;
  19. reader := TFPReaderPNG.Create;
  20. with TFPWriterPNG(Writer) do
  21. begin
  22. indexed := false;
  23. wordsized := false;
  24. UseAlpha := false;
  25. GrayScale := false;
  26. end;
  27. try
  28. // ci.LoadFromFile ('test.png', reader);
  29. with Canvas as TFPImageCanvas do
  30. begin
  31. pen.mode := pmCopy;
  32. pen.style := psSolid;
  33. pen.width := 1;
  34. pen.FPColor := colred;
  35. with pen.FPColor do
  36. red := red div 4;
  37. Ellipse (10,10, 90,90);
  38. pen.style := psDashDot;
  39. pen.FPColor := colred;
  40. HashWidth := 10;
  41. Ellipse (10,10, 90,90);
  42. with pen.FPColor do
  43. begin
  44. red := red div 2;
  45. green := red div 4;
  46. blue := green;
  47. end;
  48. pen.style := psSolid;
  49. RelativeBrushImage := true;
  50. {
  51. brush.image := ci;
  52. brush.style := bsimage;
  53. with brush.FPColor do
  54. green := green div 2;
  55. Ellipse (11,11, 89,89);
  56. }
  57. brush.style := bsSolid;
  58. brush.FPColor := MyColor;
  59. pen.style := psSolid;
  60. pen.width := 3;
  61. pen.FPColor := colSilver;
  62. ellipse (30,35, 70,65);
  63. pen.width := 1;
  64. pen.FPColor := colCyan;
  65. ellipseC (50,50, 1,1);
  66. InitEngine;
  67. F:=TFreeTypeFont.Create;
  68. F.Angle:=0.15;
  69. Font:=F;
  70. // Font.Name:='/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf';
  71. Font.Name:='/home/michael/Documents/arial.ttf';
  72. Font.Size:=10;
  73. Font.FPColor:=colWhite;
  74. // Font.Orientation:=900;
  75. Canvas.TextOut(10,90,'o');
  76. end;
  77. writeln ('Saving to inspect !');
  78. image.SaveToFile ('DrawTest.png', writer);
  79. finally
  80. Canvas.Free;
  81. image.Free;
  82. writer.Free;
  83. ci.free;
  84. reader.Free;
  85. end;
  86. end;
  87. begin
  88. // DefaultFontPath := '/usr/share/fonts/truetype/ttf-dejavu/';
  89. DoDraw;
  90. end.