記得VB6當(dāng)中有Shape控件,但是VB.net里這個(gè)控件不存在了。
創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)營(yíng)銷(xiāo)型網(wǎng)站、網(wǎng)站重做改版、鎮(zhèn)賚網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城系統(tǒng)網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為鎮(zhèn)賚等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
提個(gè)思路:使用Picture控件或Label控件,通過(guò)代碼在控件里繪圖想要的圖形,可以試試。
窗體上添加一個(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類(lèi)的繪制橢圓的方法;他有幾種格式,上面使用的是一種;
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)切橢圓。
設(shè)置Region屬性:
Dim path As New System.Drawing.Drawing2D.GraphicsPath
path.AddEllipse(0, 0, 400, 300)
Region = New Region(path)
新建一個(gè)Winform,拖兩個(gè)圖片框。圖片框1在設(shè)計(jì)器中選擇一個(gè)圖片(尺寸在圖片框容納為佳)。如下代碼測(cè)試通過(guò):
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;
}