请教!用以下代码我可以在image里有一个随鼠标移动的十字架出来,但在image有图的情况下,这十字架的颜色就变了,如何让它不变色呢?procedure TForm1.ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); procedure DrawCross(AX, AY: Integer);
begin
with image, Canvas do
begin
Pen.Color := clYellow;
Pen.Style := psSolid;
Pen.Mode := pmXor;
Pen.Width := 1;
MoveTo(ax, 0);
LineTo(ax, 600);
MoveTo(0, ay);
LineTo(800, ay);
end;
end;begin
if ismove = True then
begin
Image.Parent.DoubleBuffered := True;
if (OldX <> -1) then
begin
DrawCross(OldX, OldY);
OldX := -1;
end;
if x > 0 then
begin
DrawCross(X, Y);
Image.Cursor := crCross;
{ store old position }
OldX := x;
OldY := y;
end;
end;
end;
Y: Integer); procedure DrawCross(AX, AY: Integer);
begin
with image, Canvas do
begin
Pen.Color := clYellow;
Pen.Style := psSolid;
Pen.Mode := pmXor;
Pen.Width := 1;
MoveTo(ax, 0);
LineTo(ax, 600);
MoveTo(0, ay);
LineTo(800, ay);
end;
end;begin
if ismove = True then
begin
Image.Parent.DoubleBuffered := True;
if (OldX <> -1) then
begin
DrawCross(OldX, OldY);
OldX := -1;
end;
if x > 0 then
begin
DrawCross(X, Y);
Image.Cursor := crCross;
{ store old position }
OldX := x;
OldY := y;
end;
end;
end;
解决方案 »
- 散分,最近特郁闷...
- 如何编程创建一个button, 当已经存在时就不创建
- 如何将dbgrid中的数据导到excel中(现场结贴)
- 请教!关于继承中的子类重写、(virtual/override/)覆盖、overload(重载)的用法
- 关于QReport报表的QRShape适应报表字段大小的问题和QRDBRichText不显示数据的问题
- 再问如何用Delphi运行DOS命令
- 各位请教简单问题
- 简单问题:“聪明的程序员用Delphi”、“优秀的程序员用C++”的出处?
- 简单的打印问题,高手低手一起来。Ths!!!第一次使用Delphi的FastReport,见笑了,各位指点一下,真的很菜。
- 怎样让鼠标移动到TEdit中已有文本的末尾?请指教;谢谢
- 把参数传给dll
- 如何实现标点符号的校对?
很久没用GDI了。
我需要在image里不断的增加一些图,然后在这个图之间画一些线!
TGeometry = class
public
procedure Draw(ACanvas: TCanvas); virtual; abstract;
...
...
end;从这个基类派生出一系列的图形:
TLine = class(TGeometry)
private
FBegin: TPoint;
FEnd: TPoint;
public
procedure Draw(ACanvas: TCanvas); override;
end;TYourImage = class(TGeometry)
TCircle = class(TGeometry)
....
....然后需要有一个TList保存这些类的实例,在绘图控件的OnPaint事件中画出所以这些图形,在其它事件中建立、删除、改变这些图形的属性。
我正在用PaintBox和image组合一起用!谢谢
如果我是用
paintbox1.invalidate;
paintbox1.update;
是可以不变色了,但却把我画的线也给清空了,暂时没有做到两全其美啊!可惜!