我有一个班级
THexMap = Class(TScrollingWinControl)
private
FCanvas :timage; // the canvas to draw on.
使用构造函数来创建TImage就像这样。
Constructor THexMap.Create(AOwner: Tcomponent);
begin
inherited Create(AOwner);
FCanvas := timage.Create(self);
FCanvas.Visible := true;
{ Set intial property values for component }
MakeSolidMap;
end;
如果我尝试在这里设置父母
FCanvas.parent := THexMap;
我得到Incompatible types: TWinControl and Class of ThexMap
我如何制作这样的图像显示在THexMap中?
可能有帮助的更多信息......
如果我设置这样的创建
FCanvas := TImage.Create(AOwner);
TImage
在论坛上,但没有显示图片。如果我单击对象检查器中的组件,然后单击属性图片,正确的图像将显示在图片编辑器中。
REDRAW ..
procedure THexMap.WndProc(var Message: TMessage);
const
DISCARD_CURRENT_ORIGIN = nil;
var
R : TRect;
PS : PAINTSTRUCT;
begin
if Message.Msg = WM_PAINT then
begin
if GetUpdateRect( Handle, nil, false ) then
begin
BeginPaint( Handle, PS );
try
R := PS.rcPaint;
bitblt(fCanvas.Canvas.Handle, R.Left, R.Top, R.Width, R.Height, TempMap.Canvas.Handle, R.Left+FOffset.X, R.Top+FOffset.Y, SRCCOPY);
finally
EndPaint( Handle, PS );
end;
end
else
inherited;
end
else
inherited;
end;
答案 0 :(得分:2)
父是 TWinConrol的实例,而不是类类型
(例如,这个男孩的父母是John Doe,而不是人类)
所以你必须写:
FCanvas := timage.Create(self);
FCanvas.Parent := Self;
此处不需要Visible = true