36:begin//圓形收縮
form1.Repaint;
CV := TControlCanvas.Create;
CV.Control := PaintBox1;
paintbox1.Refresh();
hdc2:=paintbox1.Canvas.Handle;
hdc1:=image1.Canvas.Handle;
i:=w div 2;
j:=h div 2;
while i > 0 do
begin
bitblt(hdc2,i+j,j+i,w+1,h+1,hdc1,i,j,srccopy);
CV.Ellipse(Rect(i+j,j+i,w+1,h+1));
i:=i-2;
j:=j-2*h div w;
sleep(20);
end;
CV.Free;
end;
這個做的蠻丑,我一般用bitblt,和CopyRect畫,已經做了35種特效了 這種帶弧形的不知道怎么做啊
uj5u.com熱心網友回復:
varnewbmp: TBitmap;
i,j,k,bmpheight,bmpwidth:Integer;
xgroup,xcount:integer;
CV:TControlCanvas;
m, n, X, Y, S: Integer;
Rgn: HRGN;
Screen : TImage;
begin
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmpheight:=image1.Height;
bmpwidth:=image1.Width;
case RadioGroup2.ItemIndex of
0:begin//連續左移
image1.Refresh();
for i:=0 to bmpwidth do
begin
newbmp.Canvas.CopyRect(Rect(bmpwidth-i,0,bmpwidth,bmpheight),
image1.Canvas,Rect(0,0,i,bmpheight));
form1.Canvas.Draw(0,0,newbmp);
end;
end;
我的定義
uj5u.com熱心網友回復:
8: begin //從右向左展開form1.Repaint;
paintbox1.Refresh();
hdc2:=paintbox1.Canvas.Handle;
hdc1:=image1.Canvas.Handle;
for i:=0 to w do
begin
bitblt(hdc2,w-i,0,i,h,hdc1,w-i,0,srccopy);
sleep(10);
end;
end;
寫法
uj5u.com熱心網友回復:
procedure TForm1.FormCreate(Sender: TObject);
begin
w:=image1.width;
h:=image1.Height;
end;
uj5u.com熱心網友回復:
去萬一的博客學習吧http://www.cnblogs.com/del/category/113557.html
uj5u.com熱心網友回復:
方法貌似是區域填充,邊畫邊填充背景色,或者去掉背景色,uj5u.com熱心網友回復:
y1 := 0 ;y2 := 0 ;
//----------左邊部分
for x1 := w div 2 downto 0 do
begin
image1.Canvas.Polygon([Point(0,0),Point(x1,y1),Point(w div 2,h),Point(0,h )]);
Form1.Canvas.Draw(0,0,newbmp);
Application.ProcessMessages;
Sleep(10);
end;
for y1 := 0 to h do
begin
image1.Canvas.Polygon([Point(0,0),Point(0,y1),Point(w div 2,h),Point(0,h )]);
Form1.Canvas.Draw(0,0,newbmp);
Application.ProcessMessages;
Sleep(10);
end;
//-------- 右邊部分
for x2 := w div 2 to w do
begin
image1.Canvas.Polygon([Point(x2,y2),Point(w ,0),Point(w ,h),Point(w div 2,h)]);
Form1.Canvas.Draw(0,0,newbmp);
Application.ProcessMessages;
Sleep(10);
end;
for y2 :=0 to h do
begin
image1.Canvas.Polygon([Point(w,y2),Point(w ,0),Point(w ,h),Point(w div 2,h)]);
Form1.Canvas.Draw(0,0,newbmp);
Application.ProcessMessages;
Sleep(10);
end;
這是扇形展開的代碼,現在只是先跑左邊再跑右邊
uj5u.com熱心網友回復:
幾乎都做出來了,還差點火候,還是要靠自己啊轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/132842.html
上一篇:求delphi畢業設計
