画简单图形的小问题(50分)

  • 主题发起人 主题发起人 kevin3000
  • 开始时间 开始时间
K

kevin3000

Unregistered / Unconfirmed
GUEST, unregistred user!
想画依稀饿简单的图形。不知道从何着手。
Canvas控件在哪里?
一般画图都用什么控件?哪些属性?
 
Timage.canvas
 
CANVAS不是控件吗?
画点是哪个属性?
 
procedure DrawLine(CertainCanvas: TCanvas; fxy, sxy: TPoint);
//画直线
begin
if not SetCanvas(CertainCanvas) then Exit;
try
with CertainCanvas do
begin
MoveTo(fxy.X, fxy.Y);
LineTo(sxy.X, sxy.Y);
end;
finally
RevertCanvas(CertainCanvas);
end;
end;
拿个例子其它自己看看资料.
 
Canvas是画布,它是一个类,这个类并不是单独的一个控件,而是作为其他(很多)控件的一个成员。
 
楼上说的对,好多控件都有Canvas的,看你想在什么上面画图了,先画几个简单的试一下
 
谢谢几位。我先试一下。
 
真是服了你了

Form1.Canvas.Pen.Color := clRed;//这个是画笔
Form1.Canvas.Brush.Color := clBlue;//这个是画刷,主要是用来填充的

Form1.Canvas.Pixel[10,10] := clRed; //这个是画点
Form1.Canvas.MoveTo(10,10); //移动画笔到坐标 10, 10
Form1.Canvas.LineTo(100,100);// 用画笔画线到100,100
Form1.Canvas.FillRect(Rect(0,0,100,100)); //用画刷填充Rect(0,0,100,100)
 
是的,一般FORM,PANEL,IMAGE,等都有CANVAS画布属性.你可以调用CANVAS的方法进行画线,写字等操作.
 
TO lqcros,sxwy:
谢谢。呵呵
1、如果要画像素大于1的圆点呢?(像素为1,显得小了些。现在我用lineto画线的方法来画点,所以lqcros,你的画点的方法是否可以对画笔的像素赋值为希望的数值呢?)
2、如果要写颜色不为黑色的文本呢?(文本为黑色不适合我的画面)
3、如果画笔的坐标为double类型怎么办?(坐标参数好象都是integer型)
 
嘿嘿,给你一个画边界方框的代码,看看是否合用:
Canvas.Brush.Color := FPrimaryColor;
BoxRect := Rect(0, 0, 5, 5);
Canvas.FillRect(BoxRect);
BoxRect := Rect(19, 0, 24, 5);
Canvas.FillRect(BoxRect);
BoxRect := Rect(19, 19, 24, 24);
Canvas.FillRect(BoxRect);
BoxRect := Rect(0, 19, 5, 24);
Canvas.FillRect(BoxRect);
 
Canvas.Pen.Width := 2;//这个是画笔的宽度
Canvas.Font.Color := clRed;//这个是字体颜色
至于座标
你把他转成Integer就行了
x2 := Round(x1);
 
谢谢楼上二位。
可用我读取的值换算成坐标后就是小数呢!如果转化为整数后,就可能两个或多个数画在一处了。
除了求整之外,真没有别的办法了吗?
 
你不想想 小数可行不可行 屏幕是由点构成的啊 你就算是给了小数 最后输出也是要转化成整数的啊 除非是放大
你可以放大10倍 画 画完后缩小 (如果你要保留.001精度 就放大1000倍)
 
呵呵。多谢。结帖。
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
872
DelphiTeacher的专栏
D
后退
顶部