路徑的 widen 方法可以把路徑中的線, 根據指定畫筆的寬度與樣式, 轉換為乙個範圍(有點類似區域); 但轉換後再描繪路徑就只能使用 fillpath 而不是 drawpath 了. 本例沒有測試它的兩個預設引數, 因為前面已多次提到了.
本例效果圖:
**檔案:
unit unit1;窗體檔案:inte***ce
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms,
dialogs, stdctrls;
type
tform1 = class(tform)
checkbox1: tcheckbox;
checkbox2: tcheckbox;
procedure formcreate(sender: tobject);
procedure formpaint(sender: tobject);
procedure checkbox1click(sender: tobject);
procedure checkbox2click(sender: tobject);
end;
var form1: tform1;
implementation
uses gdipobj, gdipapi;
procedure tform1.formcreate(sender: tobject);
begin
checkbox1.caption := '執行 widen';
checkbox2.caption := '顯示路徑中所有的點';
end;
procedure tform1.formpaint(sender: tobject);
var g: tgpgraphics;
p: tgppen;
b1,b2: tgpbrush;
path: tgpgraphicspath;
pts: array of tgppoint;
i: integer;
begin
g := tgpgraphics.create(canvas.handle);
p := tgppen.create(aclslategray, 20);
p.setendcap(linecaparrowanchor);
b1 := tgpsolidbrush.create(aclred);
b2 := tgphatchbrush.create(hatchstylediagonalcross, aclsilver, aclslategray);
path := tgpgraphicspath.create;
path.addline(40, 50, clientwidth-40, 50);
if checkbox1.checked then
begin
path.widen(p);
g.fillpath(b2, path);
end else g.drawpath(p, path);
if checkbox2.checked then
begin
setlength(pts, path.getpointcount);
path.getpathpoints(pgppoint(pts), length(pts));
tgpsolidbrush(b1).setcolor(aclred);
for i := 0 to length(pts) - 1 do
g.fillrectangle(b1, pts[i].x-3, pts[i].y-3, 6, 6);
end;
path.free;
b1.free;
b2.free;
p.free;
g.free;
end;
procedure tform1.checkbox1click(sender: tobject);
begin
repaint;
end;
procedure tform1.checkbox2click(sender: tobject);
begin
repaint;
end;
end.
object form1: tform1left = 0
top = 0
caption = 'form1'
clientheight = 136
clientwidth = 287
color = clbtnface
font.charset = default_charset
font.color = clwindowtext
font.height = -11
font.name = 'tahoma'
font.style =
oldcreateorder = false
position = podesktopcenter
oncreate = formcreate
onpaint = formpaint
pixelsperinch = 96
textheight = 13
object checkbox1: tcheckbox
left = 43
top = 104
width = 97
height = 17
caption = 'checkbox1'
taborder = 0
onclick = checkbox1click
endobject checkbox2: tcheckbox
left = 138
top = 104
width = 125
height = 17
caption = 'checkbox2'
taborder = 1
onclick = checkbox2click
endend
1967 路徑定向
給出乙個有向圖,要求給每條邊重定向,使得定向後出度等於入度的點最多,輸出答案和任意一種方案 input 第一行兩個正整數n,m,表示1 n號點與m條邊 接下來m行,每行兩個正整數xi,yi,表示存在一條有向邊從xi指向yi n 10 5,m 3 10 5,xi,yi noutput 第一行乙個整數a...
4 路徑資訊
1.絕對路徑和相對路徑 絕對路徑 從根目錄 開始表示的路徑 相對路徑 從當前的目錄開始表示的路徑 2.隱藏目錄.和.當前目錄 當前目錄的上一級目錄 和.可以用指令ls a顯示出來。3.輸入shell指令前的部分代表的意思 例如 xuechao ubuntu desktop study xuechao...
25 路徑總和
題目描述 我的思路 首先檢視的是根節點,然後用num 根節點的值,並且要考慮到節點是否為空 需要注意的是這裡的遞迴要注意,二叉樹基本都是遞迴來實現 再一次使用遞迴 public static boolean haspathsum treenode root,int sum else return h...