当前位置:编程学习 > VB >>

用vb6,vc6可以画出这样的曲线吗?

[img=http://hi.csdn.net/space-8409715-do-album-picid-864917.html][/img] --------------------编程问答--------------------
照片在这里
http://hi.csdn.net/space-8409715-do-album-picid-864917.html --------------------编程问答-------------------- 用picture控件来做 --------------------编程问答-------------------- [img=http://hi.csdn.net/space-8409715-do-album-picid-864917.html][/img]

--------------------编程问答-------------------- 类似绘制多边形并填充 --------------------编程问答-------------------- 可以啊,画出线很简单,但是填充这些不规则的区域就麻烦点。我帮你想想吧,想到了再上来。 --------------------编程问答--------------------    我做了个差不多的控件,有网格,有刻度,有标签(标签里显示的是数字,具体标签里显示的东西可你根据你需要定做),可以以数组的方式输入点的坐标绘制成线,但是填充下面的区域难做点。你看看需不需要,是否合你用,合你用就传给你(免费的哦~~)。
   行善~,行善~,助人乃快乐之本。 --------------------编程问答-------------------- 现在填充也可以了 --------------------编程问答--------------------
显然是可以画的,跟楼上要代码。 --------------------编程问答-------------------- 嘿,8楼的,你也不笨啊~~ --------------------编程问答-------------------- 用mschart --------------------编程问答-------------------- 这种图不难画. --------------------编程问答--------------------

Option Explicit
Private Type Point
    x As Long
    y As Long
End Type
Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As Any, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Private Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint As Any, ByVal nCount As Long) As Long
Private Declare Function FillRgn Lib "gdi32" (ByVal hdc As Long, ByVal hrgn As Long, ByVal hbrush As Long) As Long
Private Declare Function GetStockObject Lib "gdi32" (ByVal nIndex As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Const ALTERNATE = 1 ' ALTERNATE and WINDING are
Const WINDING = 2 ' constants for FillMode.
Const BLACKBRUSH = 4 ' Constant for brush type.
Private Const GRAY_BRUSH = 2
Private A(0 To 12) As Point

Private Sub Command1_Click()
    Dim hbrush As Long
    Dim hrgn As Long
    Dim intP As Integer
    
    Polygon Picture1.hdc, A(0), 13
    hbrush = GetStockObject(GRAY_BRUSH)
    hrgn = CreatePolygonRgn(A(0), 13, ALTERNATE)
    If hrgn Then FillRgn Picture1.hdc, hrgn, hbrush
    DeleteObject hrgn
    
    Picture1.DrawWidth = 5
    For intP = 0 To 9
        Picture1.Line (A(intP).x, A(intP).y)-(A(intP + 1).x, A(intP + 1).y), vbBlue
    Next intP
End Sub

Private Sub Form_Load()
    Dim intP As Integer
    For intP = 0 To 10
        A(intP).x = intP * 60
        A(intP).y = 300 - CInt(300 * Rnd)
    Next intP
    A(11).x = 600
    A(11).y = 300
    A(12).x = 0
    A(12).y = 300
    Me.ScaleMode = 3
    Picture1.ScaleMode = 3
    
End Sub

--------------------编程问答-------------------- 这个应该没问题的 --------------------编程问答-------------------- 学习了
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,