fdMultitextures.pas 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. unit fdMultitextures;
  2. interface
  3. uses
  4. System.SysUtils,
  5. System.Types,
  6. System.UITypes,
  7. System.Classes,
  8. System.Variants,
  9. System.UIConsts,
  10. System.Math,
  11. FMX.Types,
  12. FMX.Controls,
  13. FMX.Forms,
  14. FMX.Graphics,
  15. FMX.Dialogs,
  16. FMX.Controls.Presentation,
  17. FMX.StdCtrls,
  18. FMX.Objects,
  19. uGBEImageUtils,
  20. FMX.Edit,
  21. FMX.EditBox,
  22. FMX.SpinBox,
  23. FMX.Effects,
  24. FMX.Filter.Effects,
  25. FMX.Ani,
  26. FMX.Layouts;
  27. type
  28. TFormMultitextures = class(TForm)
  29. imgCarte: TImage;
  30. imgCanalBleu: TImage;
  31. imgCanalVert: TImage;
  32. imgFond: TImage;
  33. imgCanalRouge: TImage;
  34. Image6: TImage;
  35. Button1: TButton;
  36. OpenDialog1: TOpenDialog;
  37. SpinBox1: TSpinBox;
  38. Label1: TLabel;
  39. Button8: TButton;
  40. SaveDialog1: TSaveDialog;
  41. Rectangle1: TRectangle;
  42. Layout1: TLayout;
  43. Layout2: TLayout;
  44. GridLayout1: TGridLayout;
  45. Rectangle2: TRectangle;
  46. Rectangle3: TRectangle;
  47. Rectangle4: TRectangle;
  48. Layout3: TLayout;
  49. Rectangle5: TRectangle;
  50. GridLayout2: TGridLayout;
  51. procedure Button1Click(Sender: TObject);
  52. procedure Button8Click(Sender: TObject);
  53. procedure imgCarteClick(Sender: TObject);
  54. procedure imgFondClick(Sender: TObject);
  55. procedure imgCanalRougeClick(Sender: TObject);
  56. procedure imgCanalVertClick(Sender: TObject);
  57. procedure imgCanalBleuClick(Sender: TObject);
  58. private
  59. procedure CalculerMAxCrop;
  60. public
  61. end;
  62. var
  63. FormMultitextures: TFormMultitextures;
  64. implementation // -------------------------------------------------------------
  65. {$R *.fmx}
  66. procedure TFormMultitextures.Button1Click(Sender: TObject);
  67. begin
  68. Image6.Bitmap.Width := imgCarte.Bitmap.Width;
  69. Image6.Bitmap.Height := imgCarte.Bitmap.Height;
  70. Image6.Bitmap.CopyFromBitmap(MultiTexturing(imgCarte.Bitmap, imgFond.Bitmap,
  71. imgCanalRouge.Bitmap, imgCanalVert.Bitmap, imgCanalBleu.Bitmap,
  72. round(SpinBox1.Value)));
  73. end;
  74. procedure TFormMultitextures.CalculerMAxCrop;
  75. var
  76. maxcrop: integer;
  77. begin
  78. maxcrop := min(imgCanalBleu.Bitmap.Width, imgCanalBleu.Bitmap.Height);
  79. maxcrop := min(maxcrop, imgCanalVert.Bitmap.Width);
  80. maxcrop := min(maxcrop, imgCanalVert.Bitmap.Height);
  81. maxcrop := min(maxcrop, imgFond.Bitmap.Width);
  82. maxcrop := min(maxcrop, imgFond.Bitmap.Height);
  83. maxcrop := min(maxcrop, imgCanalRouge.Bitmap.Width);
  84. maxcrop := min(maxcrop, imgCanalRouge.Bitmap.Height);
  85. SpinBox1.Max := maxcrop;
  86. end;
  87. procedure TFormMultitextures.imgCanalBleuClick(Sender: TObject);
  88. begin
  89. if OpenDialog1.Execute then
  90. imgCanalBleu.Bitmap.LoadFromFile(OpenDialog1.FileName);
  91. CalculerMAxCrop;
  92. end;
  93. procedure TFormMultitextures.imgCanalRougeClick(Sender: TObject);
  94. begin
  95. if OpenDialog1.Execute then
  96. imgCanalRouge.Bitmap.LoadFromFile(OpenDialog1.FileName);
  97. CalculerMAxCrop;
  98. end;
  99. procedure TFormMultitextures.imgCanalVertClick(Sender: TObject);
  100. begin
  101. if OpenDialog1.Execute then
  102. imgCanalVert.Bitmap.LoadFromFile(OpenDialog1.FileName);
  103. CalculerMAxCrop;
  104. end;
  105. procedure TFormMultitextures.imgCarteClick(Sender: TObject);
  106. begin
  107. if OpenDialog1.Execute then
  108. imgCarte.Bitmap.LoadFromFile(OpenDialog1.FileName);
  109. CalculerMAxCrop;
  110. end;
  111. procedure TFormMultitextures.imgFondClick(Sender: TObject);
  112. begin
  113. if OpenDialog1.Execute then
  114. imgFond.Bitmap.LoadFromFile(OpenDialog1.FileName);
  115. CalculerMAxCrop;
  116. end;
  117. procedure TFormMultitextures.Button8Click(Sender: TObject);
  118. begin
  119. if SaveDialog1.Execute then
  120. Image6.Bitmap.SaveToFile(SaveDialog1.FileName);
  121. end;
  122. end.