zoukankan      html  css  js  c++  java
  • VB中PictureBox控件使用教程

    PictureBox对象可以说是任何对象的原始型态,它可以加载图片、显示文字、画图外,它还能与Frame对象一样,在自己本身里头加载其它的对象而自成一个小群组,用PictureBox可以仿真出任何对象的外观,PictureBoxVB基本控件里变化最多,功能最多,也是令人最想去征服它的一个物件。

    PictureBoxFrame对象一样,本身都能装载其它的对象而自己形成一个对象群组。

    ●如果要拿PictureBox装载对象时,可以把它视为Frame来使用。

    ●与Image对象一样在设计阶段时,以Picture属性来加载图片。

    ●与Image对象一样都是在属性对话窗口按一下〝...〞钮后,跳出〝加载图片〞对话框,选择所要的图档,然后加载。

    ●在执行阶段,可以用VB的函数来帮PictureBox加载图片:

    Command1_Click()

    Picture1.Picture = LoadPicture("E:MyGifAniGif0562.gif")

    End Sub

    在设计阶段,若后悔加载图片,想把它消除时,可以把PictureBoxDelete键删掉,然后从工具箱拖曳一个新的PictureBox,或是在属性对话框里的Picture属性,把〝(位图)〞这几个反白,或是移到〝(〞的最前端,按一下键盘的Delete键即可移除图片。

    ●若在执行阶段,想把PictureBox内的图片移除,可再用LoadPicture函数,并且传空字符串给它:

    Private Sub Command1_Click()

    Picture1.Picture = LoadPicture("")

    End Sub

    --------------------------------------------------------------------------------

    PictureBox里画图:

    PSet方法PSet不只是用在PictureBox上,也可以用在窗体上,PSet最主要功用用就是在某一点位置上画一个点,用法是Object.PSet(X,Y), Color Private Sub Command1_Click()

    Picture1.PSet(500,260),RGB(128,0,255)

    'RGB函数是以红色、绿色、蓝色来表示颜色,详情请到函数指令参考

    End Sub

    若颜色省略,则以PictureBox预设的颜色。

    ●前面有学到随机数的运用,因此我们来做个范例看看,范例─满天繁星:

    Private Sub Timer1()_Timer

    Randomize

    X = Int(Rnd * Picture1.ScaleWidth)

    Y = Int(Rnd * Picture1.ScaleHeight)

    R = Int(Rnd * 256)

    G = Int(Rnd * 256)

    B = Int(Rnd * 256)

    Picture1.PSet (X, Y), RGB(R, G, B)

    End Sub

    ●Line方法Line方法专门用来画直线的工具,在窗体上也可以使用,用法:Object.Line(X1,Y2)-(X2,Y2), Color, BF

    ColorLine里与PSet一样是可以被省略的,在Color后方,若是加入B则画出的不是线条,而是一个空心矩形,若是BF,则画出来的是实心矩形。

    Private Sub Command1_Click()

    Picture1.Line(50,50)-(500,750)

    End Sub

    Private Sub Command1_Click()

    Picture1.Line(50,50)-(500,750), ,B

    End Sub

    Private Sub Command1_Click()

    Picture1.Line(50,50)-(500,750), ,BF

    End Sub

    ●Circle方法Circlr方法专门用来画圆,窗体上也是可以使用,用法:Object.Circle(X,Y), R, Color, 起始角度, 终止角度, 椭圆率

    Private Sub Command1_Click()

    Picture1.Circle(1000, 1000), 800

    End Sub

    Private Sub Command1_Click()

    Const PI = 3.1415926535

    Picture1.Circle (1000, 1000), 800, , PI / 4, 3 * PI / 4

    End Sub

    若是设定起始角度与终止角度,画出来的圆会变成弧,而角度单位使用的是弧度,也就是说,180=3.1415926535...对于没有学过弧度的网友来说,可能是难了点。

    Private Sub Command1_Click()

    Const PI = 3.1415926535

    Picture1.Circle (1000, 1000), 800, , -PI / 4, -3 * PI / 4

    End Sub

    若是起始角或终止角使用负数,它们还由由圆心画直线到起始角或终止角,这样就可以画出扇形。

    Private Sub Command1_Click()

    Picture1.Circle (1000, 1000), 800, , , , 0.75

    End Sub

    椭圆率则是圆的Y轴与X轴的比值,也就是 Y/X ,可以画出椭圆形。

    ●范例:在PictureBox里,拖曳产生一个圆

    (一般)

    Dim Dx As Single, Dy As Single

    Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

    If Button = 1 Then

    Dx = X

    Dy = Y

    End If

    End Sub Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

    If Button = 1 Then

    Picture1.Cls

    Picture1.Line (Dx, Dy)-(X, Y)

    Picture1.Circle (Dx, Dy), (((Dx - X) ^ 2 + (Dy - Y) ^ 2) ^ 0.5)

    End If

    End Sub Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

    If Button = 1 Then

    Picture1.Cls

    Picture1.AutoRedraw = True

    Picture1.Circle (Dx, Dy), (((Dx - X) ^ 2 + (Dy - Y) ^ 2) ^ 0.5)

    Picture1.AutoRedraw = False

    End If

    End Sub

    ●Cls方法Cls方法,就是清除屏幕上对象所在范围的内容,窗体也适用,若已存在内存里的内容,则无法消除,用法:Object.Cls,范例在上面的画圆范例里。

    Point方法Point就是读取PictureBox某一点上的颜色数值,传回值是长整数型态,在窗体上也适用,用法:传回值 = Object.Point

    Private Sub Picture1 AutoRedraw属性:上面的PSetLineCircleVB所提供的,画图在屏幕上的方法,因此只要对象移出屏幕外,或是对象被其它窗口或对象给盖着,刚才所画的图会不件,若在绘图时,把AutoRedraw设为True,则可把图绘入内存,即使用Cls方法也清除不掉,范例在上面的画圆范例里头。

    ●想要把用VB函数在PictureBox里所画的图给存起来时(AutoRedraw设为True时所绘的图才能存盘)VB提供了SavePicture方法,用法是SavePicture Object.Picture, 檔名。

    Private Sub Command1_Click()

    SavePicture Picture1.Picture, "C:WindowsTempTmp.Bmp"

    End Sub

    ●SavePicture只能存BMP格式的档按,请别异想天开把扩展名改成JPGGIF,存起来的图仍是BMP格式的图。

    PaintPicture方法PaintPicture方法,可以把某个物计内的图转贴到另一个物件上,但要有一个前题,这个图是用Picture属性加载进来的图才可以,用法Object.PaintPicture 来源对象.Picture, Object.X, Object.Y, 图在Object上的宽度, 图在Object上的高度, 来源对象X起始位置, 来源对象起始Y位置, 来源对象上的宽度, 来源对象上的高度, 贴图模式

    Private Sub Command1_Click()

    Picture1.PaintPicture Picture2.Picture, 0, 0

    '原尺寸转印

    End Sub

    若是改变了图在Object上的宽与高,可以改变图形的缩放 Private Sub Command1_Click()

    Picture1.PaintPicture Picture2.Picture, 0, 0, 750, 600

    End Sub

    ●Picture2内的图被放大转贴到Picture1里。

    ●至于贴图模式,留在其单元里的特殊功能里讨论

    Print方法Print可以在PictureBox上打印文字,窗体也适用,用法:Object.Print 资料。

    Private Sub Command1_Click()

    MyLng = 1234567

    Picture1.Print "今天天气真好"

    Picture1.Print "MyLng = " & MyLng

    End Sub

    ●CurrentXCurrentY属性,设定或传回目前PictureBox上画笔所在的位置,窗体也适用。

    Private Sub Command1_Click()

    Picture1.CurrentX = 500

    Picture1.CurrentY = 350

    Picture1.Print "今天天气真好"

    End Sub

  • 相关阅读:
    如何遍历对象,hasOwnProperty()方法,和 in 的区别【CordeWars实践】 Pete, the baker
    去除字符串内所有空格【在CodeWars中实践】The Hashtag Generator
    JS 去掉小数点
    "写出下列代码的执行结果"一直不会做?【JS Event Loop】
    【CodeWars】Large Factorials (计算阶乘)
    去掉数组或者字符串中相邻的重复数据
    纯CSS绘制三角形(各种角度)
    3.坐标系与轴心点
    2.blender的基本操作与动画案例挑战
    CF1470E Strange Permutation
  • 原文地址:https://www.cnblogs.com/rosesmall/p/5048705.html
Copyright © 2011-2022 走看看