广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 5235 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
troy_liaw106
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[Basic][求助] vb6 如何画多边形shape
如题,可以的 ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



献花 x0 回到顶端 [楼 主] From:台湾中华电信 | Posted:2011-02-08 22:29 |
ebolaman 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖

级别: 副版主 该用户目前不上站
版区: 程式设计
推文 x38 鲜花 x458
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

如果是 中空的 Shape,直接用 VB6 内建的函数 : PSet, Line 即可达成

不知道你的意思是 顶点与线 上色,还是要连点连起来的多边形内部也要上色


如果 内部需要上色,可以用几个 API 来达成

网路查了一下才发现有许多种方法可以达成,甚至有人都做好了模组可以直接套用

我以别人的程式码为基础,作了一个 "画出任意 正多边形" 的专案,可以参考看看


主要是参考 http://tw.knowledge.yahoo.com/quest...d=1610020405915 的回答内容

只是座标方面 (P().X = ....  P().Y = .....) 要修改一下




这是我做的一个小程式:






主要的程式码如下: (Sub DrawRegularShape)

DrawRegularShape 的参数: 图片物件, 几正边形, 圆形的长度, 初始的角度, 圆形中心的 X, 圆形中心的 Y, 颜色


复制程式
Public Sub DrawRegularShape(ByRef Pic As Object, ByVal EdgesCt As Long, ByVal CircleR As Long, ByVal IntAngle As Double, _
  ByVal CenterX As Long, ByVal CenterY As Long, ByVal FilledColor As Long)


    Dim P(100) As POINTAPI, hBrush As Long, hRgn As Long
    Dim i As Long
    Dim tempX As Long, tempY As Long, Angle As Double
    
    
    'Convert Angle Into 'Rad'
    IntAngle = IntAngle / 180 * Pi
    
    
    '----------- Specify Points ----------
    
    For i = 0 To EdgesCt - 1

      Angle = ((Pi * 2 / EdgesCt) * i) + IntAngle + (Pi / 2)
      tempX = CenterX + (CircleR * Cos(Angle))
      tempY = CenterY - (CircleR * Sin(Angle))

      P(i).X = tempX
      P(i).Y = tempY
      
'      '[Debug - Draw Pien Point]
'      Pic.DrawWidth = 3
'      Pic.PSet (tempX, tempY)

    Next i
    
    Do While i <= UBound(P)
      P(i).X = P(i - 1).X
      P(i).Y = P(i - 1).Y
      i = i + 1
    Loop

    
    '--------------------------------------
    
    hBrush = CreateSolidBrush(FilledColor)
    hRgn = CreatePolygonRgn(P(0), UBound(P), ALTERNATE)
    If hRgn Then FillRgn Pic.hdc, hRgn, hBrush
    DeleteObject hRgn
    
    
'    '[Debug - Draw Central Point]
'    Pic.DrawWidth = 5
'    Pic.PSet (CenterX, CenterY)


End Sub




这是座标的解析,如果搞不懂以上程式码运作原理的话,看这张图容易了解:








这是 "正" 多边形 的示范,如果要不规则形

只需将以上的 For ... Next 区块移除,改成 指定 座标 各是多少,或许用 文字档来载入 等方式.....



此 VB6 专案 "Draw A Polygon" + 程式 下载:


本帖包含附件
zip Example - Draw A Polygon.rar   (2022-06-09 14:17 / 39 KB)  
说明: FileType : RAR
下载次数:15


My BOINC stats :

献花 x1 回到顶端 [1 楼] From:台湾台湾宽频 | Posted:2011-02-09 03:43 |
troy_liaw106
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

内部上色的部份,颜色可以调透明度吗?


献花 x0 回到顶端 [2 楼] From:台湾台湾硕网 | Posted:2011-02-12 08:31 |
ebolaman 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖

级别: 副版主 该用户目前不上站
版区: 程式设计
推文 x38 鲜花 x458
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 troy_liaw106 于 2011-02-12 08:31 发表的 : 到引言文
内部上色的部份,颜色可以调透明度吗?


有点不懂 "透明度" 的意思

是指


(1) 图片交错,某物件有透明度 与 其他物件重叠,混色,例如:




(2) 还是单纯一个物件的透明度 ?



第一种我没去研究,看起来似乎比较困难

第二种我作了,是利用颜色的 HSB (维基百科连结数位男女连结)  来调色




HSB 其中的 S 为 "浓度" 的意思,我发现这可以来替代 "透明度",如果我没错的话

HSB 与 RGB 的转换公式是参考 http://www.easyrgb.com...p?X=MATH 的设计



这次把上次的专案稍加修改,加上能调配 HSV 的功能 (HSV 等同 HSB)

介面部分模拟 软体:色胚子 (ColorBase) 的设计,有兴趣可以去下载研究

但是有个小缺点就是,不是全部的颜色范围都能调整,可能是 Pixel 单位的缘故吧

看这张图大概能知道,但是我还是不了解详细原理:






这次还加上了 "Enable Details" 的勾选,可以直接了解绘图的原理 (长度部分单位为 Pixel)








专案的程式码稍显复杂,如果不知道各方的用途,请告诉我

我会再来解析



VB6 专案+程式 下载 :


本帖包含附件
zip Example - Draw A Polygon.rar   (2022-06-09 14:17 / 44 KB)  
说明: FileType : RAR ; CRC-32 : 70E4E23C
下载次数:7

此文章被评分,最近评分记录
财富:500 (by 三仙) | 理由: ^^ 因为您的参与,让程式设计更容易!!


My BOINC stats :

献花 x1 回到顶端 [3 楼] From:台湾台湾宽频 | Posted:2011-02-12 16:29 |
ebolaman 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖

级别: 副版主 该用户目前不上站
版区: 程式设计
推文 x38 鲜花 x458
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

对了,刚才发现 有时候调配 HSV 的那三条 PictureBox 会变成完全白色

可能是 属性 AutoRedraw 没设成 True 吧,请改正,我懒得重新上传


My BOINC stats :

献花 x0 回到顶端 [4 楼] From:台湾台湾宽频 | Posted:2011-02-12 16:35 |
troy_liaw106
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

我指的是第一个用alpha调透明度
没关系,我有想到替代方案了
谢谢


献花 x0 回到顶端 [5 楼] From:台湾中华电信 | Posted:2011-02-12 18:55 |
ebolaman 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖

级别: 副版主 该用户目前不上站
版区: 程式设计
推文 x38 鲜花 x458
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

有找到 有人作好的 两张不同图片 不同 alpha 度 混合在一起

请参考:

http://www.a1vbcode....2829.asp


还蛮厉害的


My BOINC stats :

献花 x0 回到顶端 [6 楼] From:台湾台湾宽频 | Posted:2011-02-13 00:49 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.056330 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言