sevenmiles
Technical User
I try to write a component based on TImage, and use a background bitmap for drawing. I cannot get the drawing to be the same size as the image control, it remains about 100x100 pixels even if the control is much bigger when I place it on the form.
Here is my code. I have removed everything not relevant to this problem:
Here is my code. I have removed everything not relevant to this problem:
Code:
interface
uses
SysUtils, Classes, Controls, ExtCtrls, Graphics;
type
TGraph = class(TImage)
private
BgBmp : TBitmap; // Background bitmap
protected
procedure Paint; //override; // Overriding makes the component crash.
procedure PaintRequest(Sender: TObject); // Not necessary?
public
constructor Create (AOwner: TComponent); override;
destructor Destroy; override;
published
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('BB', [TGraph]);
end;
constructor TGraph.Create (AOwner: TComponent);
begin
inherited Create (AOwner);
BgBmp := TBitmap.Create;
OnResize := PaintRequest; // Not necessary?
Paint;
end;
destructor TGraph.Destroy;
begin
BgBmp.Free;
inherited Destroy;
end;
procedure TGraph.PaintRequest(Sender: TObject); // Not necessary?
begin
invalidate;
end;
procedure TGraph.Paint;
begin
BgBmp.Height := Height; // ******* This does not work, ********
BgBmp.Width := Width; // ******* the size does not change **
with BgBmp, Canvas do
begin // Create grid on background bitmap
Brush.Color := clBlack;
Rectangle (0, 0, Width - 1, Height - 1); // Black area
Pen.Color := clGreen;
Rectangle (10, 10, Width - 11, Height - 11); // Simple grid
end;
Picture.Assign(BgBmp); // Copy background bitmap to screen
end;
end.