网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月04日漏签0天
vb吧 关注:156,098贴子:1,166,188
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1 2 下一页 尾页
  • 99回复贴,共2页
  • ,跳到 页  
<<返回vb吧
>0< 加载中...

【跟风】GDI+放射渐变

  • 只看楼主
  • 收藏

  • 回复
  • Pen血La
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
1L放图




  • Pen血La
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
图1:http://pan.baidu.com/s/1i30GVi9
图3:http://pan.baidu.com/s/1c0Eyp8W
综合实例:http://pan.baidu.com/s/1dDud1uT
GDI+模块http://pan.baidu.com/s/1dDk7Mxj (链接偷的)
然后是一些链 接


2025-08-04 10:34:53
广告
不感兴趣
开通SVIP免广告
  • Pen血La
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
首先先把窗体的ScaleMode设置为3
然后初始化GDI+,创建画布,扫地
最上面的变量后面会有用
Option Explicit
Dim G As Long, Path As Long, Brush As Long
Dim Colors(2) As Long, Pos(2) As Single '颜色,颜色位置(0-1)
Private Sub Form_Load()
InitGDIPlus
GdipCreateFromHDC Me.hdc, G
End Sub
Private Sub Form_Unload(Cancel As Integer)
GdipDeleteGraphics G
TerminateGDIPlus
End Sub
现在的效果是这样的



  • 贴吧用户_0UUV3Ee
  • 多线程
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
先顶一下,更完继续


  • Pen血La
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
创建了画刷还得给他颜色
GdipSetPathGradientPresetBlend 函数的定义是这样的
Public Declare Function GdipSetPathGradientPresetBlend Lib "gdiplus" (ByVal Brush As Long, blend As Long, positions As Single, ByVal count As Long) As GpStatus
Brush参数就是要设置颜色的画刷
Blend参数是要设置的颜色数组
positions 是每个颜色最浓的位置,最大是1,最小是0,比如红色的位置是0,那红色就在在最左端,绿色位置是1,那绿色在最右端,黄色是0.5,那黄色在中间
positions 数组必须是升序,否则画不出来
count是颜色的总数
Form_Click加入
Colors(0) = &H0 '设置颜色
Pos(0) = 0 '设置位置
Colors(1) = ARGB(255, 0, 0, 0) '设置颜色
Pos(1) = 0.2 '设置位置
Colors(2) = &HFF000000 '设置颜色
Pos(2) = 1 '设置位置
GdipSetPathGradientPresetBlend Brush, Colors(0), Pos(0), UBound(Colors) + 1 '给渐变画刷设定颜色
Colors数组是渐变的颜色,Pos数组是各个颜色的位置,渐变两端的位置是0和1


  • Lyhoki
  • 子类化
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
路过 顶一个


  • Pen血La
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
另外GdipSetPathGradientCenterPoint 可以设置渐变中心点
可以在Form_Click中加入此函数来设置渐变中心
GdipSetPathGradientCenterPoint Brush, NewPointF(50, 50)
此时画刷已经设置完成了,就差画出来了
现在在Form_Click加入
GdipFillRectangleI G, Brush, 0, 0, Me.ScaleWidth, Me.ScaleHeight'画出渐变


  • Pen血La
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
完整代码
Option Explicit
Dim G As Long, Path As Long, Brush As Long
Dim Colors(2) As Long, Pos(2) As Single '颜色,颜色位置(0-1)
Private Sub Form_Load()
InitGDIPlus
GdipCreateFromHDC Me.hdc, G
End Sub
Private Sub Form_Unload(Cancel As Integer)
GdipDeletePath Path '删除路径
GdipDeleteBrush Brush '删除画刷
GdipDeleteGraphics G
TerminateGDIPlus
End Sub
Private Sub Form_Click()
GdipCreatePath FillModeWinding, Path '创建路径
GdipAddPathEllipseI Path, 10, 10, 200, 200 '添加圆形路径
GdipCreatePathGradientFromPath Path, Brush '根据路径创建渐变画刷
Colors(0) = &H0 '设置颜色
Pos(0) = 0 '设置位置
Colors(1) = &HFF000000 '设置颜色
Pos(1) = 0.2 '设置位置
Colors(2) = &HFF3399FF '设置颜色
Pos(2) = 1 '设置位置
GdipSetPathGradientPresetBlend Brush, Colors(0), Pos(0), UBound(Colors) + 1 '给渐变画刷设定颜色
GdipSetPathGradientCenterPoint Brush, NewPointF(50, 50) '设置中心点,默认是以图形中心为中心
GdipFillRectangleI G, Brush, 0, 0, Me.ScaleWidth, Me.ScaleHeight
End Sub
然后运行,点击窗体


2025-08-04 10:28:53
广告
不感兴趣
开通SVIP免广告
  • Pen血La
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
第三张图是设置颜色是换了个函数GdipSetPathGradientSurroundColorsWithCount
2L的第二个链接是例子


  • 1158736571
  • 子类化
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
不懂


  • 辛时雨
  • API
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我突然想用vb原生绘图跟风我是原生绘图大师(虽说原生效率很低,其实是我懒得用api,api太难看懂了,倒不如自己写算法)


  • 酷暑一夏1
  • 子类化
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看不懂。。


  • 橡皮树
  • 子类化
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
此前有吧友也发过一个gdi+渐变,这个正好作为补充


  • 龙翔飞飞12
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
顶一个


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 99回复贴,共2页
  • ,跳到 页  
<<返回vb吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示