加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

VB备忘录(15) 图形处理

发布时间:2020-12-17 08:16:54 所属栏目:百科 来源:网络整理
导读:颜色 1、系统颜色 2、QBColor(0)-QBColor(15) vbred,vbblack,... 3、RGB(red,green,blue) 坐标: 注意边框,标题栏。 Scale是中间可用区域(不含边框) 自定义坐标有两种方式: 1、Object.Scale (x1,y1)-(x2-y2) 通过左上角与右下角的设置同时改变坐标走



颜色

1、系统颜色

2、QBColor(0)-QBColor(15)

vbred,vbblack,...

3、RGB(red,green,blue)



坐标:

注意边框,标题栏。 Scale是中间可用区域(不含边框)




自定义坐标有两种方式:

1、Object.Scale (x1,y1)-(x2-y2) 通过左上角与右下角的设置同时改变坐标走向与刻度。

2、ScaleLeft,ScaleTop,ScaleWidth,ScaleHeight通过左上角及高宽来改变坐标与刻度。



============================================================================================================


绘图控件

Shape,Line控件与方法的区别是,对于方法如果AutoRedraw设置为False,那就得不停地Refresh,图像才不会“消失”。

Shape,Line同其它控件一样,它仅相当于一个单独的画布。

BackColor 背景色(如果BackStyle设置为Opaque不透明时可看到)

BorderColor 边框颜色。(粗细由BorderWidth控制,样式由BorderStyle控制,比如虚线,点线,等)

FillColor 填充色(由填充样式FillStyle控制,可全填充,横线、竖线、交叉线等填充,当透明时就只能看到底色,底色再透明就只能看到窗体)

DrawMode 着色模式,当前颜色将与下层颜色的一个运算。运算后就是最终颜色。

DrawWidth 画笔的粗细

BorderWidth 控件线条的粗细。(当大于1时,BorderStyle属性由原来7种变成2种)

shape属属性控制画出什么形状:矩形,正文形,椭圆,正圆,圆角矩形等。



CurentX,CurrentY属性

返回或设置下一次打印或绘图方法的坐标。单位缇,若有scale限制以ScaleMode的单位为准。




Object.DrawWidth[=size] 1-32767(int) 单位像素,默认1

Object.DrawStyle【=number】 线型,0-6共7种,如实线,虚线,点线,点划线,双点划线,无线,内收实线,实线。

Object.DrawMode【=number】 模式(与下层颜色运行方法,结果就是最终显示的颜色)




Fillcolor,FillStyle





几个画法:


一、画点

Object.PSet 【step】 (x,y),[Color] 将一个像素点设置成指定颜色。

Step是相对位置,相对于currentX,CurrentY的位置偏移量。

注意:有些线条无法画时,可以一个点,一点地进行画法。


二、画线(或矩形)

Object.Line [step](x1,y1)-[step](x2,y2),color,BF

从起点到终点画直线或矩形。

B表示利用对角坐标画矩形。若再跟F则表示Fill颜色。



三、画圆(或椭圆)

Object.Circle 【Step】(x,radius,[color,start,end,aspect]

start,end 角度(弧度)的开始与结束。 Aspect 纵横比,为1则为圆。默认1,

start,end若有负表示将画一个到圆心的“半径”。用值仍用其正值。

方法:逆时针进行划弧、圆、椭圆。


四、绘图,根据已知图再绘图(翻转,间隔等效果)

Object.PaintPicture picture,x1,y1,width1,height1,x2,y2,width2,height2,opcode

picture 图源

x1,height1 要绘图的位置及大小

x2,height2 图源的内剪贴区位置及大小。这个区域是显示图像(其它区域不绘制)相当于剪切一个小部分的图像出来。

opcode 操作代码(vbMergeCopy,vbSrcAnd)

Option Explicit
Dim stepheight,i,j,countx,county As Long
Private Sub Command1_Click()                                        '上下型
    Picture1.Visible = False                                        '不可见
    Set Picture2.Picture = Nothing                                  '清除图像
    For i = 0 To countx - 1 Step 2
        '绘制图像
        Picture2.PaintPicture Picture1.Picture,i * 5,Picture2.Width,5,vbSrcCopy
        DoEvents
    Next i
End Sub
Private Sub Command2_Click()                                    '左右型
    Picture1.Visible = False                                    '不可见
    Set Picture2.Picture = Nothing                              '清除图像
    For i = 0 To county - 1 Step 2
        '绘制图像
        Picture2.PaintPicture Picture1.Picture,Picture2.Height,vbSrcCopy
        DoEvents
    Next i
End Sub
Private Sub Form_Load()
    Picture1.Picture = LoadPicture(App.Path & "Image.jpg")         '加载图片
    Picture2.Width = Picture1.Width                             '设置宽度
    Picture2.Height = Picture1.Height                               '设置高度
    countx = Picture1.ScaleHeight / 5
    county = Picture1.ScaleWidth / 5
    Picture2.Top = 105
    Picture2.Left = (Me.Width - Picture2.Width) / 2
End Sub

Private Sub Command3_Click()
    End
End Sub


五、指定点的颜色

object.point(x,y) x,y缇,对应点的颜色,返回的是RGB色。

用它可以取色,对比两图是否是致,结合Pset可以进行图像处理,如二值化。


六、清屏

Object.Cls 清除在运行期间产生的文本和图形。(设计其中的不能清除,AutoRedraw为真的也不能清除)




==============================================================


绘图API


一、Arc绘弧

Private Declare Function Arc Lib "gdi32" (ByVal hdc As Long,

ByVal X1 As Long,ByVal Y1 As Long,

ByVal X2 As Long,ByVal Y2 As Long,

ByVal X3 As Long,ByVal Y3 As Long,

ByVal X4 As Long,ByVal Y4 As Long) As Long

(x1,y1)-(x2,y2)规定的弧在矩形内,(x3,y3)-(x4,y4)指定了弧的起点到终点。起点和终点一样说明是闭合图形。



二、Ellipse 绘圆(椭圆)

Private Declare Function Ellipse Lib "gdi32" (ByVal hdc As Long,

ByVal X1 As Long,

ByVal X2 As Long,ByVal Y2 As Long) As Long

(x1,y2)指定外切矩形。若围成是正方形,说明画的是圆。




三、Polygon 绘多边形

Private Declare Function Polygon Lib "gdi32" (ByVal hdc As Long,

lpPoint As POINTAPI,
ByVal nCount As Long) As Long
Private Type POINTAPI '坐标结构
x As Long
y As Long
End Type

hdc设备句柄

lpPoint点坐标的数组(元素为上面坐标结构)

nCount 多边形的边数(若为5,则为5边形,对应上面数组应为5个元素)



四、Rectangle 绘矩形

Private Declare Function Rectangle Lib "gdi32" (ByVal hdc As Long,

ByVal X1 As Long,

ByVal X2 As Long,ByVal Y2 As Long) As Long

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读