delphi在image1中画一个五子棋的棋盘,谁会?(100分)

  • 主题发起人 主题发起人 夏敏
  • 开始时间 开始时间

夏敏

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi在image1中画一个五子棋的棋盘,颜色类似日常生活的棋盘,格子数14×14的?
 
放一个图片在里面不好吗?[:(]
 
有人会吗?100分!!!
 
你看这样行不行,行的话记得给分哦^-^
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
ImageWidth,ImageHeight:integer;
//获得Image控件的宽度和高度
GridX,GridY:integer;
//小格子的宽度和高度
OffsetX,OffsetY:integer;
//水平方向和垂直方向的偏移量
begin

ImageWidth:=image.Width;
ImageHeight:=image.Height;
GridX:=Round(ImageWidth/14);
GridY:=Round(ImageHeight/14);
OffsetX:=GridX;
OffsetY:=GridY;
Image.Canvas.Brush.Color:=$00CAFFFF;
//定义棋盘的背景颜色
Image.Canvas.Rectangle(0,0,ImageWidth,ImageHeight);
//画棋盘的边框
for i:=1 to 13do
// 垂直画13根线;
with Image.Canvasdo

begin

MoveTo(OffsetX,0);
LineTo(OffsetX,ImageHeight);
OffsetX:=OffsetX+GridX;
end;

for i:=1 to 13do
//水平方向画13根线
with Image.Canvasdo

begin

MoveTo(0,OffsetY);
LineTo(ImageWidth,OffsetY);
OffsetY:=OffsetY+GridY;
end;

end;
 
就像楼上的那样
用两个循环就可以了。
 
那样效果不是很好
我有个自己刚学DELPHI时候写的网络五子棋的代码
要看不
 
为什么不用TPaintBox,TImage不具有更新通知,而TPaintBox可以通过响应OnPaint事件进行更新。
 
楼上说得对,用System选项板上的PaintBox控件,
把Image换成PaintBox会更好些,代码写在OnPaint事件那里.
 
干什么用?学习吗?
网上有很多五子棋delphi的源代码。
下载一个看看就行了
 
楼上的两个:
TPaintBox 不是这样用的。这样在 OnPaint 里有太多的语句了,效率太低了。
这样会很闪的,(如果要画的东东比较多时)
加上do
ubleBuffer 比较慢。

一般是这样。 在窗口上放一个TPaintBox,
再在程序里建一个 TBitmap 与 PaintBox 一样大。
画的时候先在 Bitmap 上画,再 BitBlt 到 PaintBox

这样在 OnPaint 里只用一句BitBlt 就可以了。
速度快,不用反复重画。
 
不过用 Image 来画的话比较闪,
记得在 TImage 的父控件用代码
Timage的父控件.DoubleBuffer := true;
这样就不闪了。不过速度比较慢。
但对于五子棋已经够了。
 
用drawgrid就可以了啦........
 
to QSmile:
我只说应该用TPaintBox,好像没说如何画吧。
咱不是在下面这个贴子说过DoubleBuffered。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2436995
 
多人接受答案了。
 
后退
顶部