当前位置: 首页 > news >正文

考研培训机构排名前五的机构网站优化的意义

考研培训机构排名前五的机构,网站优化的意义,合规部对于网站建设的意见,北京高端网站开发公司GDI 区域检测与边框宽度的关系 https://blog.csdn.net/xiaoyao961/article/details/148657777 GDI 中与 CreateEllipticRgn/CreatePolygonRgn 对应的函数 在 GDI 中,区域 (Region) 的创建和操作与 GDI 有不同的接口。GDI 提供了更高级的对象模型,以下是…

GDI 区域检测与边框宽度的关系
https://blog.csdn.net/xiaoyao961/article/details/148657777

GDI+ 中与 CreateEllipticRgn/CreatePolygonRgn 对应的函数

在 GDI+ 中,区域 (Region) 的创建和操作与 GDI 有不同的接口。GDI+ 提供了更高级的对象模型,以下是与 GDI 中 CreateEllipticRgn 和 CreatePolygonRgn 对应的 GDI+ 函数:

1. 对应 CreateEllipticRgn 的 GDI+ 函数

在 GDI+ 中创建椭圆区域,使用 GdipCreateRegion 和 GdipAddEllipseToRegion 函数:

' GDI+ API 声明
Private Declare Function GdipCreateRegion Lib "gdiplus" (ByRef region As Long) As Long
Private Declare Function GdipAddEllipseToRegion Lib "gdiplus" (ByVal region As Long, ByVal x As Single, ByVal y As Single, ByVal width As Single, ByVal height As Single) As Long
Private Declare Function GdipDeleteRegion Lib "gdiplus" (ByVal region As Long) As Long
Private Declare Function GdipIsVisiblePoint Lib "gdiplus" (ByVal region As Long, ByVal x As Single, ByVal y As Single, ByVal graphics As Long) As Long' 创建椭圆区域示例
Dim hRegion As Long
Dim graphics As Long' 创建空区域
GdipCreateRegion hRegion' 添加椭圆到区域
GdipAddEllipseToRegion hRegion, 50, 50, 100, 100  ' 椭圆边界框' 使用区域...' 释放资源
GdipDeleteRegion hRegion

2. 对应 CreatePolygonRgn 的 GDI+ 函数

在 GDI+ 中创建多边形区域,使用 GdipCreatePath 和 GdipAddPathPolygon 函数:

' GDI+ API 声明
Private Declare Function GdipCreatePath Lib "gdiplus" (ByVal fillMode As Long, ByRef path As Long) As Long
Private Declare Function GdipAddPathPolygon Lib "gdiplus" (ByVal path As Long, ByVal points As Long, ByVal count As Long) As Long
Private Declare Function GdipCreateRegionFromPath Lib "gdiplus" (ByVal path As Long, ByRef region As Long) As Long
Private Declare Function GdipDeletePath Lib "gdiplus" (ByVal path As Long) As Long' 点结构定义
Private Type GdiplusPointX As SingleY As Single
End Type' 创建多边形区域示例
Dim hPath As Long
Dim hRegion As Long
Dim points(2) As GdiplusPoint  ' 三角形3个点' 初始化点数据
points(0).X = 50
points(0).Y = 50
points(1).X = 150
points(1).Y = 50
points(2).X = 100
points(2).Y = 150' 创建路径
GdipCreatePath 0, hPath  ' 0 = FillModeAlternate' 添加多边形到路径
GdipAddPathPolygon hPath, VarPtr(points(0)), 3' 从路径创建区域
GdipCreateRegionFromPath hPath, hRegion' 使用区域...' 释放资源
GdipDeletePath hPath
GdipDeleteRegion hRegion

3. GDI+ 区域与 GDI 区域的转换

如果需要在 GDI 和 GDI+ 区域之间转换,可以使用以下方法:

' GDI+ 区域转 GDI 区域
Private Declare Function GdipGetRegionData Lib "gdiplus" (ByVal region As Long, ByVal bufferSize As Long, buffer As Any) As Long
Private Declare Function ExtCreateRegion Lib "gdi32" (lpXform As Any, ByVal nCount As Long, ByVal lpRgnData As Long) As Long' GDI 区域转 GDI+ 区域
Private Declare Function GdipCreateRegionFromHrgn Lib "gdiplus" (ByVal hrgn As Long, ByRef region As Long) As Long

4. 性能和功能对比

功能GDI 方法GDI+ 方法
创建椭圆区域CreateEllipticRgnGdipCreateRegion + AddEllipse
创建多边形区域CreatePolygonRgnGdipCreatePath + AddPathPolygon
区域操作CombineRgnGdipCombineRegions
区域包含点检测PtInRegionGdipIsVisiblePoint
抗锯齿支持不支持支持
复杂路径支持有限完整支持 (贝塞尔曲线等)

5. 完整示例:使用 GDI+ 创建圆形区域并检测鼠标位置

' GDI+ API 声明
Private Declare Function GdipStartup Lib "gdiplus" (token As Long, inputbuf As GdiplusStartupInput, Optional ByVal outputbuf As Long = 0) As Long
Private Declare Function GdipShutdown Lib "gdiplus" (ByVal token As Long) As Long
Private Declare Function GdipCreateRegion Lib "gdiplus" (ByRef region As Long) As Long
Private Declare Function GdipAddEllipseToRegion Lib "gdiplus" (ByVal region As Long, ByVal x As Single, ByVal y As Single, ByVal width As Single, ByVal height As Single) As Long
Private Declare Function GdipDeleteRegion Lib "gdiplus" (ByVal region As Long) As Long
Private Declare Function GdipIsVisiblePoint Lib "gdiplus" (ByVal region As Long, ByVal x As Single, ByVal y As Single, ByVal graphics As Long) As Long
Private Declare Function GdipCreateFromHDC Lib "gdiplus" (ByVal hdc As Long, ByRef graphics As Long) As Long
Private Declare Function GdipDeleteGraphics Lib "gdiplus" (ByVal graphics As Long) As LongPrivate Type GdiplusStartupInputGdiplusVersion As LongDebugEventCallback As LongSuppressBackgroundThread As LongSuppressExternalCodecs As Long
End TypePrivate gdiplusToken As Long
Private hRegion As Long
Private hGraphics As LongPrivate Sub Form_Load()Dim gdiplusInput As GdiplusStartupInput' 初始化 GDI+gdiplusInput.GdiplusVersion = 1GdipStartup gdiplusToken, gdiplusInput' 创建图形对象GdipCreateFromHDC Me.hdc, hGraphics' 创建圆形区域GdipCreateRegion hRegionGdipAddEllipseToRegion hRegion, 100, 100, 200, 200  ' 圆心(200,200),半径100
End SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)Dim pixelX As Single, pixelY As SingleDim isInside As Long' 转换为像素坐标pixelX = X / Screen.TwipsPerPixelXpixelY = Y / Screen.TwipsPerPixelY' 检测点是否在区域内isInside = GdipIsVisiblePoint(hRegion, pixelX, pixelY, hGraphics)If isInside <> 0 ThenMe.Caption = "鼠标在圆形内"ElseMe.Caption = "鼠标在圆形外"End If
End SubPrivate Sub Form_Unload(Cancel As Integer)' 释放资源GdipDeleteRegion hRegionGdipDeleteGraphics hGraphicsGdipShutdown gdiplusToken
End Sub

总结

GDI+ 提供了更强大、更灵活的区域操作功能,虽然接口与 GDI 不同,但可以实现相同的功能,并且支持更多高级特性(如抗锯齿、复杂路径)。在需要高性能或复杂图形处理时,推荐使用 GDI+ 方法。

http://www.hkea.cn/news/302035/

相关文章:

  • wordpress可爱的主题seo优化教程
  • 自己可以申请网站做外卖吗网站描述和关键词怎么写
  • 公司网站网页设计seo站长工具推广平台
  • 重庆南岸营销型网站建设公司哪家专业真实的网站制作
  • 郑州企业网站建设兼职推广渠道
  • 网站哪些数据优化大师的作用
  • 政府网站集约化建设总结营销软文推广平台
  • 学网站开发跟那个专业最相近百度站长平台注册
  • 网站开发python电脑培训班有哪些科目
  • 惠州响应式网站哪家好云盘搜索
  • spring做网站合肥seo排名收费
  • 做58网站怎么赚钱二十个优化
  • 做企业手机网站北京seo网站开发
  • 关于网站建设中原创文章的一些想法体育热点新闻
  • 天河做网站开发免费留电话号码的广告
  • 成都市金堂县网站建设免费seo在线工具
  • 计算机培训中心网站高端网站建设的公司
  • 成都建设路小学网站大作设计网站
  • 桂林创新大厦网站今日十大热点新闻事件
  • 做网站空间哪家好windows7系统优化工具
  • 网站建设首选公司seo推广一个月见效
  • 微信做模板下载网站有哪些推广网站要注意什么
  • 做网站 java c常德seo快速排名
  • 仙桃做网站找谁常用的网络推广方法
  • 品牌推广网站怎样做百度手机助手苹果版
  • 武汉工业网站制作百度人工服务热线24小时
  • 新闻头条最新消息今日头条站长之家seo综合
  • app与网站宁波seo网络推广渠道介绍
  • 国外学做咖啡的网站百度高级搜索网址
  • 建网站开源代码游戏推广怎么找玩家