1
0
Files
applications
bindings
components
acs
cmdline
epiktimer
fpspreadsheet
gradcontrols
jvcllaz
onguard
orpheus
powerpdf
rgbgraphics
example
rgbexample.lpi
rgbexample.lpr
rgbunit.lfm
rgbunit.lrs
rgbunit.pas
COPYING.LGPL
COPYING.modifiedLGPL
lazrgbgraphics.lpk
lazrgbgraphics.pas
rgbcarbonroutines.pas
rgbgraphics.pas
rgbgtkroutines.pas
rgbqtroutines.pas
rgbroutines.pas
rgbtypes.pas
rgbutils.pas
rgbwinroutines.pas
richview
rtfview
rx
svn
tparadoxdataset
tvplanit
virtualtreeview
virtualtreeview-unstable
xdev_toolkit
examples
lclbindings
wst
lazarus-ccr/components/rgbgraphics/example/rgbunit.pas

153 lines
3.8 KiB
ObjectPascal
Raw Normal View History

{
/***************************************************************************
RGBUnit.pas
***************************************************************************/
*****************************************************************************
* *
* See the file COPYING.modifiedLGPL, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
Author: Tom Gregorovic (_tom_@centrum.cz)
Abstract:
}
unit RGBUnit;
{$ifdef fpc}
{$mode objfpc}{$H+}
{$endif}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons,
RGBGraphics, ExtDlgs;
type
{ TFormExample }
TFormExample = class(TForm)
ButtonReplace: TButton;
ButtonInvert: TButton;
ButtonRotate90: TButton;
ButtonRedLine: TButton;
OpenPictureDialog: TOpenPictureDialog;
procedure ButtonInvertClick(Sender: TObject);
procedure ButtonRedLineClick(Sender: TObject);
procedure ButtonReplaceClick(Sender: TObject);
procedure ButtonRotate90Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
public
end;
var
FormExample: TFormExample;
RGBBitmap: TRGB32Bitmap;
RGBMask: TRGBMask;
implementation
{ TFormExample }
procedure TFormExample.FormCreate(Sender: TObject);
begin
if OpenPictureDialog.Execute then
begin
RGBBitmap := TRGB32Bitmap.CreateFromFile(OpenPictureDialog.FileName);
end
else
begin
RGBBitmap := TRGB32Bitmap.Create(400, 300);
RGBBitmap.Canvas.DrawMode := dmFill;
RGBBitmap.Canvas.Fill(clBlack);
RGBBitmap.Canvas.FillColor := clRed;
RGBBitmap.Canvas.Ellipse(100, 0, 300, 200);
RGBBitmap.Canvas.FillColor := clGreen;
RGBBitmap.Canvas.Ellipse(50, 100, 250, 300);
RGBBitmap.Canvas.FillColor := clBlue;
RGBBitmap.Canvas.Ellipse(150, 100, 350, 300);
RGBBitmap.Canvas.FillColor := clWhite;
RGBBitmap.Canvas.Ellipse(150, 100, 250, 200);
RGBBitmap.Canvas.DrawMode := dmFillAndOutline;
end;
RGBMask := TRGBMask.Create(160, 100);
RGBMask.Clear;
RGBMask.Ellipse(10, 10, 150, 90);
end;
procedure TFormExample.ButtonRedLineClick(Sender: TObject);
begin
RGBBitmap.Canvas.OutlineColor := clRed;
RGBBitmap.Canvas.Line(10, 10, 100, 100);
Invalidate;
end;
procedure TFormExample.ButtonReplaceClick(Sender: TObject);
begin
RGBBitmap.Canvas.EraseMode := ermReplace;
RGBBitmap.Canvas.FillColor := clRed;
RGBBitmap.Canvas.PaperColor := clBlue;
RGBBitmap.Canvas.FillRect(0, 0, Pred(RGBBitmap.Width), Pred(RGBBitmap.Height));
RGBBitmap.Canvas.EraseMode := ermNone;
Invalidate;
end;
procedure TFormExample.ButtonInvertClick(Sender: TObject);
begin
RGBBitmap.Invert;
RGBMask.Invert;
Invalidate;
end;
procedure TFormExample.ButtonRotate90Click(Sender: TObject);
begin
RGBBitmap.Rotate90;
RGBMask.Rotate90;
Invalidate;
end;
procedure TFormExample.FormDestroy(Sender: TObject);
begin
RGBBitmap.Free;
RGBMask.Free;
end;
procedure TFormExample.FormPaint(Sender: TObject);
begin
if RGBBitmap = nil then Exit;
// draw bitmap
RGBBitmap.Canvas.DrawTo(Canvas, 180, 10);
RGBMask.DrawTo(Canvas, 10, 160);
RGBMask.DrawShapeTo(Canvas, 10, 340);
end;
initialization
{$I rgbunit.lrs}
end.