procedure TForm1.Button1Click(Sender: TObject);
var
w,h:integer;
i,j:integer;
www,hhh,k,l:integer;
begin
w:=trunc(ww * 1.4);
h:=trunc(hh*1.4);
w:=image1.width div w;
h:=image1.Height div h;
www:=trunc(ww * 1.4);
hhh:=trunc(hh * 1.4);
Image1.Canvas.pen.Color:=clred;
for i:=0 to w do
begin
k:= i*www;
Image1.Canvas.Polygon([Point(k, l+(hhh div 2)), Point(k+(www div 2), l), Point(k+www, l+(hhh div 2)), Point(k+(www div 2), l+hhh)]);
for j:=0 to h do
begin
l:= j*hhh;
Image1.Canvas.Polygon([Point(k, l+(hhh div 2)), Point(k+(www div 2), l), Point(k+www, l+(hhh div 2)), Point(k+(www div 2), l+hhh)]);
end;
end;
我用以上代碼畫的菱形格子
現在在地圖編輯器中需要編輯這些格子
需要選中上色或者去色
我用如下代碼
x1:=x div trunc(ww * 1.4);
y1:=y div trunc(hh * 1.4);
showmessage('x:'+inttostr(x)+' y:'+inttostr(y)+' x1:'+inttostr(x1)+' y1:'+inttostr(y1));
xx:=trunc(x1 * ww * 1.4);
yy:=trunc(y1 * hh * 1.4);
www:=trunc(ww * 1.4);
hhh:=trunc(hh * 1.4);
pt.X:=xx;
pt.y:=yy+trunc(hhh div 2);
pts[0]:=pt;
pt.X:=xx+trunc(www div 2);
pt.y:=yy;
pts[1]:=pt;
pt.X:=xx+www;
pt.y:=yy+trunc(hhh div 2);
pts[2]:=pt;
pt.X:=xx+trunc(www div 2);
pt.y:=yy+hhh;
pts[3]:=pt;
但是我發現我算出來的點在畫到畫布上后會間隔一列
請問后面的這個選中坐標該如何計算
請各位幫個忙
給點思路
我是用的xy位置進行處理來計算4個點的位置來繪制菱形的
如果這個辦法不行請各位高手給點其他方法的建議
uj5u.com熱心網友回復:
尋求各位高手幫忙支招啊尋求版主幫忙啊
uj5u.com熱心網友回復:
好像有個 ptinrect 類似的函式..參考下 判斷滑鼠是否在這個范圍內uj5u.com熱心網友回復:
這是你自找的麻煩。。為什么不寫成控制元件?這樣就可以接識訓鼠訊息了函式CreatePlygonRgn和SetWindowRgn可以將控制元件剪切成你想要的形狀
uj5u.com熱心網友回復:
1、記錄每個菱形中心點坐標2、當前坐標與中心點坐標最近的那個來區分你點擊了那個菱形。
3、以中心點坐標為基礎 做圖 這個比較容易吧
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/149060.html
