ImagerMain.pas
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:8k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit ImagerMain;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   fcImager, ComCtrls, StdCtrls, ExtCtrls, fcCommon, fcCombo, fcColorCombo,
  6.   CheckLst, fcTreeCombo, fcStatusBar, PicEdt, fcFontCombo, TypInfo,
  7.   ExtDlgs,fcClearPanel, fcButtonGroup, fcOutlookBar, Buttons
  8.   {$ifndef Ver100}
  9.   ,ImgList
  10.   {$endif}
  11.   ,fcButton, fcImgBtn, fcShapeBtn, fcDemoRichEdit;
  12. type
  13.   TImagerForm = class(TForm)
  14.     Panel1: TPanel;
  15.     Bevel1: TBevel;
  16.     Panel2: TPanel;
  17.     Panel3: TPanel;
  18.     Bevel3: TBevel;
  19.     fcStatusBar1: TfcStatusBar;
  20.     ImageList1: TImageList;
  21.     fcOutlookBar1: TfcOutlookBar;
  22.     fcOutlookBar1fcShapeBtn1: TfcShapeBtn;
  23.     fcOutlookBar1fcShapeBtn2: TfcShapeBtn;
  24.     fcOutlookBar1fcShapeBtn3: TfcShapeBtn;
  25.     Label1: TLabel;
  26.     Label2: TLabel;
  27.     Label3: TLabel;
  28.     Label5: TLabel;
  29.     Label6: TLabel;
  30.     Label7: TLabel;
  31.     Label8: TLabel;
  32.     Label17: TLabel;
  33.     combo_Color: TfcColorCombo;
  34.     combo_DrawStyle: TComboBox;
  35.     CheckListBox1: TCheckListBox;
  36.     CheckListBoxHints: TMemo;
  37.     GroupBox1: TGroupBox;
  38.     Label9: TLabel;
  39.     Label10: TLabel;
  40.     Label11: TLabel;
  41.     edit_Rotation_Angle: TEdit;
  42.     edit_Rotation_X: TEdit;
  43.     UpDown7: TUpDown;
  44.     edit_Rotation_Y: TEdit;
  45.     UpDown8: TUpDown;
  46.     UpDown9: TUpDown;
  47.     GroupBox2: TGroupBox;
  48.     Label12: TLabel;
  49.     Label13: TLabel;
  50.     edit_AlphaBlend_Amount: TEdit;
  51.     UpDown10: TUpDown;
  52.     GroupBox3: TGroupBox;
  53.     Label14: TLabel;
  54.     Label15: TLabel;
  55.     Label16: TLabel;
  56.     edit_Wave_Ratio: TEdit;
  57.     UpDown11: TUpDown;
  58.     checkbox_Wave_Wrap: TCheckBox;
  59.     edit_Wave_XDiv: TEdit;
  60.     edit_Wave_YDiv: TEdit;
  61.     UpDown12: TUpDown;
  62.     UpDown13: TUpDown;
  63.     SpeedButton2: TSpeedButton;
  64.     Track_Lightness: TTrackBar;
  65.     Track_Contrast: TTrackBar;
  66.     Track_Sponge: TTrackBar;
  67.     Track_GaussianBlur: TTrackBar;
  68.     Track_Saturation: TTrackBar;
  69.     Track_Sharpen: TTrackBar;
  70.     SpeedButton1: TSpeedButton;
  71.     fcImager1: TfcImager;
  72.     fcDemoRichEdit1: TfcDemoRichEdit;
  73.     checkbox_AlphaBlend_Transparent: TCheckBox;
  74.     procedure IntPropChange(Sender: TObject);
  75.     procedure combo_ColorChange(Sender: TObject);
  76.     procedure CheckListBox1ClickCheck(Sender: TObject);
  77.     procedure RotationOffsetChange(Sender: TObject);
  78.     procedure RotationAngleChange(Sender: TObject);
  79.     procedure BlendBitmapBtnClick(Sender: TObject);
  80.     procedure AlphaBlendAmountChange(Sender: TObject);
  81.     procedure WaveIntChange(Sender: TObject);
  82.     procedure checkbox_Wave_WrapClick(Sender: TObject);
  83.     procedure combo_DrawStyleChange(Sender: TObject);
  84.     procedure FormShow(Sender: TObject);
  85.     procedure fcImager1Click(Sender: TObject);
  86.     procedure CheckListBox1MouseMove(Sender: TObject; Shift: TShiftState;
  87.       X, Y: Integer);
  88.     procedure FormCreate(Sender: TObject);
  89.     procedure FormDestroy(Sender: TObject);
  90.     procedure SpeedButton1Click(Sender: TObject);
  91.     procedure Track_LightnessChange(Sender: TObject);
  92.     procedure checkbox_AlphaBlend_TransparentClick(Sender: TObject);
  93.   private
  94.     { Private declarations }
  95.     FDefaultsStream: TMemoryStream;
  96.   public
  97.     { Public declarations }
  98.   end;
  99. var
  100.   ImagerForm: TImagerForm;
  101. implementation
  102. {$R *.DFM}
  103. procedure TImagerForm.IntPropChange(Sender: TObject);
  104. begin
  105.   with Sender as TEdit do
  106.     fcSetOrdProp(fcImager1.BitmapOptions, fcGetToken(Name, '_', 1), StrToIntDef(Text, 0));
  107. end;
  108. procedure TImagerForm.combo_ColorChange(Sender: TObject);
  109. begin
  110.   with Sender as TfcColorCombo do
  111.     fcSetOrdProp(fcImager1.BitmapOptions, fcGetToken(Name, '_', 1), SelectedColor);
  112. end;
  113. procedure TImagerForm.CheckListBox1ClickCheck(Sender: TObject);
  114. var i: Integer;
  115.   function Comp: TPersistent;
  116.   begin
  117.     if i < 5 then result := fcImager1.BitmapOptions
  118.     else result := fcImager1;
  119.   end;
  120. begin
  121.   with Sender as TCheckListBox do
  122.   begin
  123.     fcImager1.BitmapOptions.BeginUpdate;
  124.       for i := 0 to Items.Count - 1 do
  125.         fcSetOrdProp(Comp, fcReplace(Items[i], ' ', ''), ord(Checked[i]));
  126.     fcImager1.BitmapOptions.EndUpdate;
  127.   end;
  128. end;
  129. procedure TImagerForm.RotationOffsetChange(Sender: TObject);
  130. begin
  131.   with Sender as TEdit do
  132.     fcSetOrdProp(fcImager1.BitmapOptions.Rotation, 'Center' + fcGetToken(Name, '_', 2), StrToIntDef(Text, 0));
  133. end;
  134. procedure TImagerForm.RotationAngleChange(Sender: TObject);
  135. begin
  136.   with Sender as TEdit do
  137.     fcSetOrdProp(fcImager1.BitmapOptions.Rotation, fcGetToken(Name, '_', 2), StrToIntDef(Text, 0));
  138. end;
  139. procedure TImagerForm.BlendBitmapBtnClick(Sender: TObject);
  140. var ABitmap: TBitmap;
  141. begin
  142.   ABitmap := TBitmap.Create;
  143.   with fcImager1.BitmapOptions.AlphaBlend do
  144.   begin
  145.     Bitmap.Transparent := False;
  146.     if ExecutePictureEditor(Bitmap, ABitmap) then Bitmap.Assign(ABitmap);
  147.     Bitmap.Transparent := Transparent;
  148.   end;
  149.   ABitmap.Free;
  150.   Abort;
  151. end;
  152. procedure TImagerForm.AlphaBlendAmountChange(Sender: TObject);
  153. begin
  154.   fcImager1.BitmapOptions.AlphaBlend.Bitmap.Transparent := checkbox_AlphaBlend_Transparent.Checked;
  155.   fcImager1.BitmapOptions.AlphaBlend.Amount := StrToIntDef((Sender as TEdit).Text, 0);
  156.   {  fcImager1.BitmapOptions.AlphaBlend.Bitmap.Transparent := checkbox_AlphaBlend_Transparent.Checked;
  157.   with Sender as TEdit do
  158.     fcSetOrdProp(fcImager1.BitmapOptions.AlphaBlend, fcGetToken(Name, '_', 2), StrToIntDef(Text, 0));}
  159. end;
  160. procedure TImagerForm.WaveIntChange(Sender: TObject);
  161. begin
  162.   with Sender as TEdit do
  163.     fcSetOrdProp(fcImager1.BitmapOptions.Wave, fcGetToken(Name, '_', 2), StrToIntDef(Text, 0));
  164. end;
  165. procedure TImagerForm.checkbox_Wave_WrapClick(Sender: TObject);
  166. begin
  167.   with Sender as TCheckBox do
  168.     fcSetOrdProp(fcImager1.BitmapOptions.Wave, fcGetToken(Name, '_', 2), ord(Checked));
  169. end;
  170. procedure TImagerForm.combo_DrawStyleChange(Sender: TObject);
  171. begin
  172.   with Sender as TComboBox do
  173.     fcImager1.DrawStyle := TfcImagerDrawStyle(GetEnumValue(TypeInfo(TfcImagerDrawStyle), 'ds' + Text));
  174. end;
  175. procedure TImagerForm.FormShow(Sender: TObject);
  176. var i: Integer;
  177.   function Comp: TPersistent;
  178.   begin
  179.     if i < 5 then result := fcImager1.BitmapOptions
  180.     else result := fcImager1;
  181.   end;
  182. begin
  183.   combo_DrawStyle.ItemIndex := 0;
  184.   with CheckListBox1 do
  185.   begin
  186.     fcImager1.BitmapOptions.BeginUpdate;
  187.       for i := 0 to Items.Count - 1 do
  188.         Checked[i] := Boolean(fcGetOrdProp(Comp, fcReplace(Items[i], ' ', '')));
  189.     fcImager1.BitmapOptions.EndUpdate;
  190.     fcImager1.Invalidate;
  191.   end;
  192.   if FDefaultsStream.Size = 0 then for i := 0 to ComponentCount - 1 do
  193.     if not (Components[i] is TfcCustomButtonGroup)
  194.        and not (Components[i] is TfcCustomColorCombo)
  195.        and not (Components[i] is TRichEdit) then
  196.       FDefaultsStream.WriteComponent(Components[i]);
  197. end;
  198. procedure TImagerForm.fcImager1Click(Sender: TObject);
  199. begin
  200.   ExecutePictureEditor(fcImager1.Picture.Graphic, fcImager1.Picture);
  201. end;
  202. procedure TImagerForm.CheckListBox1MouseMove(Sender: TObject;
  203.   Shift: TShiftState; X, Y: Integer);
  204. var Index: Integer;
  205. begin
  206.   with Sender as TCheckListBox do
  207.   begin
  208.     Index := ItemAtPos(Point(x, y), True);
  209.     if Index <> -1 then
  210.       Hint := CheckListBoxHints.Lines[Index];
  211.   end;
  212. end;
  213. procedure TImagerForm.FormCreate(Sender: TObject);
  214. begin
  215.   FDefaultsStream := TMemoryStream.Create;
  216. end;
  217. procedure TImagerForm.FormDestroy(Sender: TObject);
  218. begin
  219.   FDefaultsStream.Free;
  220. end;
  221. procedure TImagerForm.SpeedButton1Click(Sender: TObject);
  222. var i: Integer;
  223. begin
  224.   FDefaultsStream.Position := 0;
  225.   for i := 0 to ComponentCount - 1 do
  226.     if not (Components[i] is TfcCustomButtonGroup)
  227.        and not (Components[i] is TfcCustomColorCombo)
  228.        and not (Components[i] is TRichEdit) then
  229.       FDefaultsStream.ReadComponent(Components[i]);
  230.   combo_Color.SelectedColor := clNone;
  231. end;
  232. procedure TImagerForm.Track_LightnessChange(Sender: TObject);
  233. begin
  234.   with Sender as TTrackBar do
  235.     fcSetOrdProp(fcImager1.BitmapOptions, fcGetToken(Name, '_', 1), position);
  236. end;
  237. procedure TImagerForm.checkbox_AlphaBlend_TransparentClick(Sender: TObject);
  238. begin
  239.   with Sender as TCheckBox do
  240.     fcSetOrdProp(fcImager1.BitmapOptions.AlphaBlend,
  241.        fcGetToken(Name, '_', 2), ord(Checked));
  242. end;
  243. end.