You've already forked lazarus-ccr
- implementation for Carbon interface
- fix compilation after graphics rewrite - improved example application git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@251 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@@ -22,13 +22,15 @@
|
||||
}
|
||||
unit RGBUnit;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
{$ifdef fpc}
|
||||
{$mode objfpc}{$H+}
|
||||
{$endif}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons,
|
||||
RGBGraphics;
|
||||
RGBGraphics, ExtDlgs, ExtCtrls;
|
||||
|
||||
type
|
||||
|
||||
@@ -39,6 +41,7 @@ type
|
||||
ButtonInvert: TButton;
|
||||
ButtonRotate90: TButton;
|
||||
ButtonRedLine: TButton;
|
||||
OpenPictureDialog: TOpenPictureDialog;
|
||||
procedure ButtonInvertClick(Sender: TObject);
|
||||
procedure ButtonRedLineClick(Sender: TObject);
|
||||
procedure ButtonReplaceClick(Sender: TObject);
|
||||
@@ -53,6 +56,7 @@ type
|
||||
var
|
||||
FormExample: TFormExample;
|
||||
RGBBitmap: TRGB32Bitmap;
|
||||
RGBMask: TRGBMask;
|
||||
|
||||
implementation
|
||||
|
||||
@@ -60,7 +64,31 @@ implementation
|
||||
|
||||
procedure TFormExample.FormCreate(Sender: TObject);
|
||||
begin
|
||||
RGBBitmap := TRGB32Bitmap.CreateFromFile('splash_logo.xpm');
|
||||
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);
|
||||
@@ -73,13 +101,13 @@ end;
|
||||
|
||||
procedure TFormExample.ButtonReplaceClick(Sender: TObject);
|
||||
begin
|
||||
RGBBitmap.Canvas.EraseMode := emReplace;
|
||||
RGBBitmap.Canvas.FillColor := clWhite;
|
||||
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 := emNone;
|
||||
RGBBitmap.Canvas.EraseMode := ermNone;
|
||||
|
||||
Invalidate;
|
||||
end;
|
||||
@@ -87,6 +115,7 @@ end;
|
||||
procedure TFormExample.ButtonInvertClick(Sender: TObject);
|
||||
begin
|
||||
RGBBitmap.Invert;
|
||||
RGBMask.Invert;
|
||||
|
||||
Invalidate;
|
||||
end;
|
||||
@@ -94,6 +123,7 @@ end;
|
||||
procedure TFormExample.ButtonRotate90Click(Sender: TObject);
|
||||
begin
|
||||
RGBBitmap.Rotate90;
|
||||
RGBMask.Rotate90;
|
||||
|
||||
Invalidate;
|
||||
end;
|
||||
@@ -101,16 +131,20 @@ 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 2x smaller
|
||||
RGBBitmap.Canvas.StretchDrawTo(Canvas, 140, 10, RGBBitmap.Width div 2,
|
||||
RGBBitmap.Height div 2);
|
||||
// draw bitmap
|
||||
RGBBitmap.Canvas.DrawTo(Canvas, 180, 10);
|
||||
|
||||
RGBMask.DrawTo(Canvas, 10, 160);
|
||||
RGBMask.DrawShapeTo(Canvas, 10, 340);
|
||||
end;
|
||||
|
||||
|
||||
initialization
|
||||
{$I rgbunit.lrs}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user