if you use this code the brush will be drawn as fast as possible without skipping:
Global Var
ALastX: integer;
ALastY: integer;
var
iX: Integer;
iY: Integer;
iTransparency: Integer;
iPenColor: TColor;
iPenWidth: Integer;
begin
iX := ImageEnView1.Layers[ImageEnView1.LayersCurrent].ConvXScr2Bmp(X);
iY := ImageEnView1.Layers[ImageEnView1.LayersCurrent].ConvYScr2Bmp(Y);
if (PaintBrush1.Down) and (ImageEnView1.MouseCapture) then
begin
{ Paint Brush }
with ImageEnView1 do
begin
iPenWidth := StrToIntDef(PenSize1.Text, 20);
iPenColor := PenColor.Color;
iTransparency := ieOpacityToAlpha(StrToIntDef(PenOpacity1.Text, 100));
IEBitmap.Canvas.Pen.Width := iPenWidth;
IEBitmap.Canvas.Pen.Color := iPenColor;
IEBitmap.Canvas.MoveTo(iX, iY);
IEBitmap.Canvas.LineTo(ALastX, ALastY);
IEBitmap.AlphaChannel.Canvas.Brush.Color := iPenColor or (iTransparency)
or (iTransparency shl 8) or (iTransparency shl 16);
IEBitmap.AlphaChannel.CanvasCurrentAlpha := iTransparency;
IEBitmap.AlphaChannel.Canvas.Pen.Width := iPenWidth;
IEBitmap.AlphaChannel.Canvas.MoveTo(iX, iY);
IEBitmap.AlphaChannel.Canvas.LineTo(ALastX, ALastY);
Update;
end;
end;
end;
Place the above code in the OnMouseDown and OnMouseMove events.
Then add this to OnMouseMove:
iX := ImageEnView1.Layers[ImageEnView1.LayersCurrent].ConvXScr2Bmp(X);
iY := ImageEnView1.Layers[ImageEnView1.LayersCurrent].ConvYScr2Bmp(Y);
ALastX := iX;
ALastY := iY;
Bill Miller
Adirondack Software & Graphics
Email: w2m@hughes.net
EBook: http://www.imageen.com/ebook/
Custom Commercial ImageEn Development