新建一個(gè)Winform,拖兩個(gè)圖片框。圖片框1在設(shè)計(jì)器中選擇一個(gè)圖片(尺寸在圖片框容納為佳)。如下代碼測(cè)試通過(guò):
創(chuàng)新互聯(lián)主營(yíng)曾都網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app軟件開(kāi)發(fā)公司,曾都h5小程序制作搭建,曾都網(wǎng)站營(yíng)銷推廣歡迎曾都等地區(qū)企業(yè)咨詢
private?void?button1_Click(object?sender,?EventArgs?e)
{
Image?img1?=?this.pictureBox1.Image;
Image?img2?=?CropToCircle(img1);
this.pictureBox2.Image?=?img2;
}
public?Image?CropToCircle(Image?img1)
{
Image?img2?=?new?Bitmap(img1.Width,?img1.Height,?
img1.PixelFormat);
Graphics?g?=?Graphics.FromImage(img2);
using?(Brush?br?=?
new?SolidBrush(SystemColors.Control))//背景色
{
g.FillRectangle(br,?0,?0,?
img2.Width,?img2.Height);
}
GraphicsPath?path?=?new?GraphicsPath();
path.AddEllipse(0,?0,?img2.Width,?img2.Height);
g.SetClip(path);
g.DrawImage(img1,?0,?0);
return?img2;
}
窗體上添加一個(gè)按鈕,在該按鈕的單擊事件里編寫(xiě)代碼如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'聲明窗體的Me.CreateGraphics對(duì)象
Dim MyGraphics As Graphics = Me.CreateGraphics
Dim Cx As Integer = 150 '圓心的X坐標(biāo)
Dim Cy As Integer = 150 '圓心的Y坐標(biāo)
Dim R As Integer '圓的半徑
'繪制半徑為R的圓
For R = 5 To 100 Step 5
MyGraphics.DrawEllipse(Pens.Black, New Rectangle(Cx - R, Cy - R, 2 * R, 2 * R))
Next
End Sub
‘用黑色畫(huà)筆繪制一組同心圓,半徑從5開(kāi)始,增量為5。
說(shuō)明:
DrawEllipse是VB.Net的Graphics類的繪制橢圓的方法;他有幾種格式,上面使用的是一種;
DrawEllipse(畫(huà)筆的顏色,繪制橢圓所需要的矩形區(qū)域)
其中:繪制橢圓所需要的矩形區(qū)域,如果被定義為正方形,就演變成繪制圓,定義該區(qū)域由死個(gè)數(shù)值確定,第1個(gè)數(shù)值,確定該區(qū)域左上角的X坐標(biāo),第2個(gè)數(shù)值,確定該區(qū)域左上角的Y坐標(biāo),第3個(gè)數(shù)值,確定該區(qū)域的寬度,第4個(gè)數(shù)值,確定該區(qū)域的高度。
例如1:
DrawEllipse(Pens.Black, New Rectangle(150, 150, 50, 50))
就是以圓心坐標(biāo)為(100,100),繪制半徑為50 的圓。其實(shí)在VB.NET中,是告訴系統(tǒng)在以左上角坐標(biāo)(150,150),邊長(zhǎng)為50的正方形里繪制內(nèi)切圓。理解了是在正方形里繪制內(nèi)切圓,就可以通過(guò)數(shù)學(xué)計(jì)算,知道如何繪制了。
同理例如2:
DrawEllipse(Pens.Black, New Rectangle(150, 150, 100, 50))
就是以圓心坐標(biāo)為(100,100),繪制半徑為50 的圓。其實(shí)在VB.NET中,是告訴系統(tǒng)在以左上角坐標(biāo)(150,150),長(zhǎng)軸為100,短軸為50的內(nèi)切橢圓。
可以啊
me_paint 事件中添加畫(huà)圖語(yǔ)句
me.creategraphic.drawellipse(pen,center,r,r)
center 是圓心位置point 類型數(shù)據(jù)
添加一個(gè)timer控件 控制動(dòng)畫(huà)
在控件的tick事件中添加語(yǔ)句
center.x+=1
center.y=center.x * 10+50
me.invalidate '(以一次函數(shù)y=10x+50運(yùn)動(dòng),可以換成你需要的運(yùn)動(dòng)軌跡)