MainUnit.pas 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. unit MainUnit;
  2. interface
  3. uses
  4. {$IFDEF FPC} LCLIntf, {$ELSE} Windows, Messages, {$ENDIF}
  5. SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls,
  6. GR32_Image;
  7. type
  8. TFmPngDemo = class(TForm)
  9. ImageDisplay: TImage32;
  10. Panel1: TPanel;
  11. ButtonLoad: TButton;
  12. ButtonSave: TButton;
  13. CheckBoxFit: TCheckBox;
  14. procedure FormCreate(Sender: TObject);
  15. procedure ButtonLoadClick(Sender: TObject);
  16. procedure ButtonSaveClick(Sender: TObject);
  17. procedure CheckBoxFitClick(Sender: TObject);
  18. end;
  19. var
  20. FmPngDemo: TFmPngDemo;
  21. implementation
  22. uses
  23. GR32.Examples,
  24. GR32,
  25. GR32_PNG,
  26. GR32_PortableNetworkGraphic;
  27. {$R *.dfm}
  28. procedure TFmPngDemo.ButtonLoadClick(Sender: TObject);
  29. var
  30. OpenDialog: TOpenDialog;
  31. PNG: TPortableNetworkGraphic32;
  32. begin
  33. OpenDialog := TOpenDialog.Create(Self);
  34. try
  35. OpenDialog.Filter := 'PNG Images (*.png)|*.png|All files (*.*)|*.*';
  36. OpenDialog.DefaultExt := '.png';
  37. if not OpenDialog.Execute then
  38. exit;
  39. PNG := TPortableNetworkGraphic32.Create;
  40. try
  41. PNG.LoadFromFile(OpenDialog.FileName);
  42. ImageDisplay.Bitmap.Assign(PNG);
  43. finally
  44. PNG.Free;
  45. end;
  46. finally
  47. OpenDialog.Free;
  48. end;
  49. end;
  50. procedure TFmPngDemo.ButtonSaveClick(Sender: TObject);
  51. var
  52. SaveDialog: TSaveDialog;
  53. PNG: TPortableNetworkGraphic32;
  54. begin
  55. SaveDialog := TSaveDialog.Create(Self);
  56. try
  57. SaveDialog.Filter := 'PNG Images (*.png)|*.png|All files (*.*)|*.*';
  58. SaveDialog.DefaultExt := '.png';
  59. if not SaveDialog.Execute then
  60. exit;
  61. PNG := TPortableNetworkGraphic32.Create;
  62. try
  63. PNG.AdaptiveFilterMethods := [aafmSub, aafmUp, aafmAverage];
  64. PNG.Assign(ImageDisplay.Bitmap);
  65. PNG.InterlaceMethod := imAdam7;
  66. PNG.SaveToFile(SaveDialog.FileName);
  67. finally
  68. PNG.Free;
  69. end;
  70. finally
  71. SaveDialog.Free;
  72. end;
  73. end;
  74. procedure TFmPngDemo.CheckBoxFitClick(Sender: TObject);
  75. begin
  76. if (TCheckBox(Sender).Checked) then
  77. begin
  78. ImageDisplay.ScaleMode := smResize;
  79. ImageDisplay.BitmapAlign := baCenter;
  80. end else
  81. begin
  82. ImageDisplay.ScaleMode := smNormal;
  83. ImageDisplay.BitmapAlign := baTopLeft;
  84. end;
  85. end;
  86. procedure TFmPngDemo.FormCreate(Sender: TObject);
  87. begin
  88. {$IFNDEF FPC}
  89. ImageDisplay.Margins.Top := 8;
  90. ImageDisplay.Margins.Left := 8;
  91. ImageDisplay.Margins.Bottom := 8;
  92. ImageDisplay.Margins.Right := 8;
  93. ImageDisplay.AlignWithMargins := True;
  94. {$ENDIF}
  95. if Graphics32Examples.MediaFileExists('Dice.png') then
  96. LoadBitmap32FromPNG(ImageDisplay.Bitmap, Graphics32Examples.MediaFolder+'\Dice.png');
  97. end;
  98. end.