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

📄 jvqpainterqbform.pas

📁 East make Tray Icon in delphi
💻 PAS
📖 第 1 页 / 共 2 页
字号:
end;

function BGProdProdSum(Inner, Outer: Integer): Integer;
begin
  Result := (Outer * Inner) * (Outer + Inner);
end;

function BGDrawXor(Inner, Outer: Integer): Integer;
begin
  Result := (Outer - ImgDrawFactor) xor (ImgDrawFactor + Inner);
end;

// end of functions used in Quick Background

procedure SetQBFuncs;
begin
  QBFuncs[0] := BGProd;
  QBFuncs[1] := BGSum;
  QBFuncs[2] := BGSub;
  QBFuncs[3] := BGXor;
  QBFuncs[4] := BGAnd;
  QBFuncs[5] := BGOutAnd;
  QBFuncs[6] := BGInAnd;
  QBFuncs[7] := BGOutXor;
  QBFuncs[8] := BGInXor;
  QBFuncs[9] := BGOutMod;
  QBFuncs[10] := BGInMod;
  QBFuncs[11] := BGProdXor;
  QBFuncs[12] := BGSumXor;
  QBFuncs[13] := BGSubXor;
  QBFuncs[14] := BGProdAnd;
  QBFuncs[15] := BGSumAnd;
  QBFuncs[16] := BGSubAnd;
  QBFuncs[17] := BGInner;
  QBFuncs[18] := BGOuter;
  QBFuncs[19] := BGOutRed;
  QBFuncs[20] := BGInRed;
  QBFuncs[21] := BGOutGreen;
  QBFuncs[22] := BGInGreen;
  QBFuncs[23] := BGOutBlue;
  QBFuncs[24] := BGInBlue;
  QBFuncs[25] := BGInModOut;
  QBFuncs[26] := BGOutModIn;
  QBFuncs[27] := BGOutModIn2;
  QBFuncs[28] := BGModMod;
  QBFuncs[29] := BGModModXor;
  QBFuncs[30] := BGMod3;
  QBFuncs[31] := BGModModSub;
  QBFuncs[32] := BGModModAdd;
  QBFuncs[33] := BGModModAnd;
  QBFuncs[34] := BGModModOr;
  QBFuncs[35] := BGXOr3;
  QBFuncs[36] := BGXOr3Mod;
  QBFuncs[37] := BGSubXorSum;
  QBFuncs[38] := BGSubProdSum;
  QBFuncs[39] := BGProdProdSum;
  QBFuncs[40] := BGDrawXor;
end;

procedure TPainterQBForm.QuickBack;
var
  Bmp: TBitmap;
  I, J: Integer;
  Line: PJvRGBArray;
begin
  RedBack := QBFuncs[QBRedFn];
  GreenBack := QBFuncs[QBGreenFn];
  BlueBack := QBFuncs[QBBlueFn];
  Bmp := TBitmap.Create;
  try
    Bmp.Assign(FPainterForm.Picture.Bitmap);
    Bmp.PixelFormat := pf24bit;
    for I := 0 to Bmp.Height - 1 do
    begin
      Line := Bmp.ScanLine[I];
      for J := 0 to Bmp.Width - 1 do
      begin
        Line[J].rgbRed   := QBDRed + RedBack(I, J);
        Line[J].rgbGreen := QBDGreen + GreenBack(I, J);
        Line[J].rgbBlue  := QBDBlue + BlueBack(I, J);
      end;
    end;
    FPainterForm.Preview(Bmp);
  finally
    Bmp.Free;
  end;
end;

procedure TPainterQBForm.QBListClick(Sender: TObject);
var
  Index: Integer;
begin
  Index := QBList.ItemIndex;
  if redradio.Checked then
    QBRedFn := Index;
  if greenradio.Checked then
    QBGreenFn := Index;
  if blueradio.Checked then
    QBBlueFn := Index;
  SetLabels;
  QuickBack;
end;

procedure TPainterQBForm.FormShow(Sender: TObject);
begin
  SetLabels;
end;



procedure TPainterQBForm.qbpresetsDrawItem(Sender: TObject; Index: Integer;
  Rect: TRect; State: TOwnerDrawState; var Handled: Boolean);

var
  S: string;
  P: Integer;
begin
  S := qbpresets.Items[Index];
  P := Pos('=', S);
  S := Copy(S, 1, P - 1);
  qbpresets.Canvas.TextRect(Rect, Rect.Left, Rect.Top, S); 
  Handled := True; 
end;

procedure TPainterQBForm.qbpresetsClick(Sender: TObject);
begin
  if qbpresets.ItemIndex >= 0 then
    StrToQuickBack(qbpresets.Items[qbpresets.ItemIndex]);
end;

procedure TPainterQBForm.SetLabels;
begin
  redradio.Caption := QBList.Items[QBRedFn];
  greenradio.Caption := QBList.Items[QBGreenFn];
  blueradio.Caption := QBList.Items[QBBlueFn];
end;

procedure TPainterQBForm.AddBackdrop1Click(Sender: TObject);
var
  S: string;
begin
  S := InputBox(RsPainterQuickBackdrops, RsEnterName, '');
  if S = '' then
    Exit;
  S := S + '=' +
    IntToStr(QBRedFn) + ',' +
    IntToStr(QBGreenFn) + ',' +
    IntToStr(QBBlueFn) + ',' +
    IntToStr(QBDRed) + ',' +
    IntToStr(QBDGreen) + ',' +
    IntToStr(QBDBlue) + ',' +
    IntToStr(ImgDrawFactor);
  qbpresets.Items.Append(S);
  qbpresets.Items.SaveToFile(QBFile);
end;

procedure TPainterQBForm.DeleteBackdrop1Click(Sender: TObject);
begin
  if qbpresets.ItemIndex >= 0 then
  begin
    qbpresets.Items.Delete(qbpresets.ItemIndex);
    qbpresets.Items.SaveToFile(QBFile);
  end;
end;

procedure TPainterQBForm.FormCreate(Sender: TObject);
begin
  ImgDrawFactor := 255;
  QBDRed := 0;
  QBDBlue := 0;
  QBDGreen := 0;
  QBRedFn := 0;
  QBGreenFn := 0;
  QBBlueFn := 0;
  SetQBFuncs;
  QBFile := ApplDir + 'PainterQB.txt';
  if FileExists(QBFile) then
    qbpresets.Items.LoadFromFile(QBFile);
end;

procedure TPainterQBForm.trkRedChange(Sender: TObject);
begin
  QBDRed := trkred.Position;
  QuickBack;
end;

procedure TPainterQBForm.trkGreenChange(Sender: TObject);
begin
  QBDGreen := trkgreen.Position;
  QuickBack;
end;

procedure TPainterQBForm.trkBlueChange(Sender: TObject);
begin
  QBDBlue := trkblue.Position;
  QuickBack;
end;

procedure TPainterQBForm.trkFactorChange(Sender: TObject);
begin
  ImgDrawFactor := trkfactor.Position;
  QuickBack;
end;

procedure TPainterQBForm.UpdateBackdrop1Click(Sender: TObject);
var
  S: string;
  P: Integer;
begin
  if qbpresets.ItemIndex < 0 then
  begin
    ShowMessage(RsNoItemSelected);
    Exit;
  end;
  S := qbpresets.Items[qbpresets.ItemIndex];
  P := Pos('=', S);
  S := Copy(S, 1, P - 1);
  S := InputBox(RsPainterQuickBackdrops, RsEnterName, S);
  if S = '' then
    Exit;
  S := S + '=' +
    IntToStr(QBRedFn) + ',' +
    IntToStr(QBGreenFn) + ',' +
    IntToStr(QBBlueFn) + ',' +
    IntToStr(QBDRed) + ',' +
    IntToStr(QBDGreen) + ',' +
    IntToStr(QBDBlue) + ',' +
    IntToStr(ImgDrawFactor);
  qbpresets.Items[qbpresets.ItemIndex] := S;
  qbpresets.Items.SaveToFile(QBFile);
end;

function TPainterQBForm.StrToQuickBack(S: string): Boolean;
var
  P: Integer;
  List: TStringList;
begin
  Result := False;
  P := Pos('=', S);
  if P = 0 then
    Exit;
  S := Copy(S, P + 1, Length(S));
  List := TStringList.Create;
  try
    try
      List.CommaText := S;
      QBRedFn := StrToInt(List[0]);
      QBGreenFn := StrToInt(List[1]);
      QBBlueFn := StrToInt(List[2]);
      QBDRed := StrToInt(List[3]);
      trkred.Position := QBDRed;
      QBDGreen := StrToInt(List[4]);
      trkgreen.Position := QBDGreen;
      QBDBlue := StrToInt(List[5]);
      trkblue.Position := QBDBlue;
      ImgDrawFactor := StrToInt(List[6]);
      trkfactor.Position := ImgDrawFactor;
      SetLabels;
      QuickBack;
      Result := True;
    except
      ShowMessage(RsErrorInPresets);
      Result := False;
    end;
  finally
    List.Free;
  end;
end;

procedure TPainterQBForm.redradioClick(Sender: TObject);
begin
  QBList.ItemIndex := QBRedFn;
end;

procedure TPainterQBForm.greenradioClick(Sender: TObject);
begin
  QBList.ItemIndex := QBGreenFn;
end;

procedure TPainterQBForm.blueradioClick(Sender: TObject);
begin
  QBList.ItemIndex := QBBlueFn;
end;

procedure TPainterQBForm.SetDrawImage(ADrawImage: TJvDrawImage);
begin
  FPainterForm := ADrawImage;
end;

{$IFDEF UNITVERSIONING}
const
  UnitVersioning: TUnitVersionInfo = (
    RCSfile: '$RCSfile: JvQPainterQBForm.pas,v $';
    Revision: '$Revision: 1.16 $';
    Date: '$Date: 2004/09/10 22:05:59 $';
    LogPath: 'JVCL\run'
  );

initialization
  RegisterUnitVersion(HInstance, UnitVersioning);

finalization
  UnregisterUnitVersion(HInstance);
{$ENDIF UNITVERSIONING}

end.

⌨️ 快捷键说明

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