⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagermain.pas

📁 一套及时通讯的原码
💻 PAS
字号:
unit ImagerMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  fcImager, ComCtrls, StdCtrls, ExtCtrls, fcCommon, fcCombo, fcColorCombo,
  CheckLst, fcTreeCombo, fcStatusBar, PicEdt, fcFontCombo, TypInfo,
  ExtDlgs,fcClearPanel, fcButtonGroup, fcOutlookBar, Buttons
  {$ifndef Ver100}
  ,ImgList
  {$endif}
  ,fcButton, fcImgBtn, fcShapeBtn, fcDemoRichEdit;

type
  TImagerForm = class(TForm)
    Panel1: TPanel;
    Bevel1: TBevel;
    Panel2: TPanel;
    Panel3: TPanel;
    Bevel3: TBevel;
    fcStatusBar1: TfcStatusBar;
    ImageList1: TImageList;
    fcOutlookBar1: TfcOutlookBar;
    fcOutlookBar1fcShapeBtn1: TfcShapeBtn;
    fcOutlookBar1fcShapeBtn2: TfcShapeBtn;
    fcOutlookBar1fcShapeBtn3: TfcShapeBtn;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label17: TLabel;
    combo_Color: TfcColorCombo;
    combo_DrawStyle: TComboBox;
    CheckListBox1: TCheckListBox;
    CheckListBoxHints: TMemo;
    GroupBox1: TGroupBox;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    edit_Rotation_Angle: TEdit;
    edit_Rotation_X: TEdit;
    UpDown7: TUpDown;
    edit_Rotation_Y: TEdit;
    UpDown8: TUpDown;
    UpDown9: TUpDown;
    GroupBox2: TGroupBox;
    Label12: TLabel;
    Label13: TLabel;
    edit_AlphaBlend_Amount: TEdit;
    UpDown10: TUpDown;
    GroupBox3: TGroupBox;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    edit_Wave_Ratio: TEdit;
    UpDown11: TUpDown;
    checkbox_Wave_Wrap: TCheckBox;
    edit_Wave_XDiv: TEdit;
    edit_Wave_YDiv: TEdit;
    UpDown12: TUpDown;
    UpDown13: TUpDown;
    SpeedButton2: TSpeedButton;
    Track_Lightness: TTrackBar;
    Track_Contrast: TTrackBar;
    Track_Sponge: TTrackBar;
    Track_GaussianBlur: TTrackBar;
    Track_Saturation: TTrackBar;
    Track_Sharpen: TTrackBar;
    SpeedButton1: TSpeedButton;
    fcImager1: TfcImager;
    fcDemoRichEdit1: TfcDemoRichEdit;
    checkbox_AlphaBlend_Transparent: TCheckBox;
    procedure IntPropChange(Sender: TObject);
    procedure combo_ColorChange(Sender: TObject);
    procedure CheckListBox1ClickCheck(Sender: TObject);
    procedure RotationOffsetChange(Sender: TObject);
    procedure RotationAngleChange(Sender: TObject);
    procedure BlendBitmapBtnClick(Sender: TObject);
    procedure AlphaBlendAmountChange(Sender: TObject);
    procedure WaveIntChange(Sender: TObject);
    procedure checkbox_Wave_WrapClick(Sender: TObject);
    procedure combo_DrawStyleChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure fcImager1Click(Sender: TObject);
    procedure CheckListBox1MouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Integer);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure Track_LightnessChange(Sender: TObject);
    procedure checkbox_AlphaBlend_TransparentClick(Sender: TObject);
  private
    { Private declarations }
    FDefaultsStream: TMemoryStream;
  public
    { Public declarations }
  end;

var
  ImagerForm: TImagerForm;


implementation

{$R *.DFM}

procedure TImagerForm.IntPropChange(Sender: TObject);
begin
  with Sender as TEdit do
    fcSetOrdProp(fcImager1.BitmapOptions, fcGetToken(Name, '_', 1), StrToIntDef(Text, 0));
end;

procedure TImagerForm.combo_ColorChange(Sender: TObject);
begin
  with Sender as TfcColorCombo do
    fcSetOrdProp(fcImager1.BitmapOptions, fcGetToken(Name, '_', 1), SelectedColor);
end;

procedure TImagerForm.CheckListBox1ClickCheck(Sender: TObject);
var i: Integer;
  function Comp: TPersistent;
  begin
    if i < 5 then result := fcImager1.BitmapOptions
    else result := fcImager1;
  end;
begin
  with Sender as TCheckListBox do
  begin
    fcImager1.BitmapOptions.BeginUpdate;
      for i := 0 to Items.Count - 1 do
        fcSetOrdProp(Comp, fcReplace(Items[i], ' ', ''), ord(Checked[i]));
    fcImager1.BitmapOptions.EndUpdate;
  end;
end;

procedure TImagerForm.RotationOffsetChange(Sender: TObject);
begin
  with Sender as TEdit do
    fcSetOrdProp(fcImager1.BitmapOptions.Rotation, 'Center' + fcGetToken(Name, '_', 2), StrToIntDef(Text, 0));
end;

procedure TImagerForm.RotationAngleChange(Sender: TObject);
begin
  with Sender as TEdit do
    fcSetOrdProp(fcImager1.BitmapOptions.Rotation, fcGetToken(Name, '_', 2), StrToIntDef(Text, 0));
end;

procedure TImagerForm.BlendBitmapBtnClick(Sender: TObject);
var ABitmap: TBitmap;
begin
  ABitmap := TBitmap.Create;
  with fcImager1.BitmapOptions.AlphaBlend do
  begin
    Bitmap.Transparent := False;
    if ExecutePictureEditor(Bitmap, ABitmap) then Bitmap.Assign(ABitmap);
    Bitmap.Transparent := Transparent;
  end;
  ABitmap.Free;
  Abort;
end;

procedure TImagerForm.AlphaBlendAmountChange(Sender: TObject);
begin
  fcImager1.BitmapOptions.AlphaBlend.Bitmap.Transparent := checkbox_AlphaBlend_Transparent.Checked;
  fcImager1.BitmapOptions.AlphaBlend.Amount := StrToIntDef((Sender as TEdit).Text, 0);
  {  fcImager1.BitmapOptions.AlphaBlend.Bitmap.Transparent := checkbox_AlphaBlend_Transparent.Checked;
  with Sender as TEdit do
    fcSetOrdProp(fcImager1.BitmapOptions.AlphaBlend, fcGetToken(Name, '_', 2), StrToIntDef(Text, 0));}

end;

procedure TImagerForm.WaveIntChange(Sender: TObject);
begin
  with Sender as TEdit do
    fcSetOrdProp(fcImager1.BitmapOptions.Wave, fcGetToken(Name, '_', 2), StrToIntDef(Text, 0));
end;

procedure TImagerForm.checkbox_Wave_WrapClick(Sender: TObject);
begin
  with Sender as TCheckBox do
    fcSetOrdProp(fcImager1.BitmapOptions.Wave, fcGetToken(Name, '_', 2), ord(Checked));
end;

procedure TImagerForm.combo_DrawStyleChange(Sender: TObject);
begin
  with Sender as TComboBox do
    fcImager1.DrawStyle := TfcImagerDrawStyle(GetEnumValue(TypeInfo(TfcImagerDrawStyle), 'ds' + Text));
end;

procedure TImagerForm.FormShow(Sender: TObject);
var i: Integer;
  function Comp: TPersistent;
  begin
    if i < 5 then result := fcImager1.BitmapOptions
    else result := fcImager1;
  end;
begin
  combo_DrawStyle.ItemIndex := 0;
  with CheckListBox1 do
  begin
    fcImager1.BitmapOptions.BeginUpdate;
      for i := 0 to Items.Count - 1 do
        Checked[i] := Boolean(fcGetOrdProp(Comp, fcReplace(Items[i], ' ', '')));
    fcImager1.BitmapOptions.EndUpdate;
    fcImager1.Invalidate;
  end;
  if FDefaultsStream.Size = 0 then for i := 0 to ComponentCount - 1 do
    if not (Components[i] is TfcCustomButtonGroup)
       and not (Components[i] is TfcCustomColorCombo)
       and not (Components[i] is TRichEdit) then
      FDefaultsStream.WriteComponent(Components[i]);
end;

procedure TImagerForm.fcImager1Click(Sender: TObject);
begin
  ExecutePictureEditor(fcImager1.Picture.Graphic, fcImager1.Picture);
end;

procedure TImagerForm.CheckListBox1MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var Index: Integer;
begin
  with Sender as TCheckListBox do
  begin
    Index := ItemAtPos(Point(x, y), True);
    if Index <> -1 then
      Hint := CheckListBoxHints.Lines[Index];
  end;
end;

procedure TImagerForm.FormCreate(Sender: TObject);
begin
  FDefaultsStream := TMemoryStream.Create;
end;

procedure TImagerForm.FormDestroy(Sender: TObject);
begin
  FDefaultsStream.Free;
end;

procedure TImagerForm.SpeedButton1Click(Sender: TObject);
var i: Integer;
begin
  FDefaultsStream.Position := 0;
  for i := 0 to ComponentCount - 1 do
    if not (Components[i] is TfcCustomButtonGroup)
       and not (Components[i] is TfcCustomColorCombo)
       and not (Components[i] is TRichEdit) then
      FDefaultsStream.ReadComponent(Components[i]);
  combo_Color.SelectedColor := clNone;
end;

procedure TImagerForm.Track_LightnessChange(Sender: TObject);
begin
  with Sender as TTrackBar do
    fcSetOrdProp(fcImager1.BitmapOptions, fcGetToken(Name, '_', 1), position);
end;

procedure TImagerForm.checkbox_AlphaBlend_TransparentClick(Sender: TObject);
begin
  with Sender as TCheckBox do
    fcSetOrdProp(fcImager1.BitmapOptions.AlphaBlend,
       fcGetToken(Name, '_', 2), ord(Checked));
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -