GDI问题,如何形成一个不规则的区域。

FengSC 2000-06-29 11:39:00
CreateRectRgn函数可以形成一个矩形区域,如何形成一个需要的不规则区域。如一只小鸟的外形。
...全文
162 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhzh426 2000-07-14
  • 打赏
  • 举报
回复
关注!
wangminfu 2000-06-30
  • 打赏
  • 举报
回复
先定义几个基本区域,然后用CombineRegion得到你所需要形状,最后设置window或form的形状即可。
Wingsun 2000-06-30
  • 打赏
  • 举报
回复
例如:
HRGN rgn;
rgn=CreateEllipticRgn(5,30,330,210);
SetWindowRgn(this->Handle,rgn,true);
你也可以使用以下函数:

CombineRgn
CreateEllipticRgn
CreateEllipticRgnIndirect
CreatePolygonRgn
CreatePolyPolygonRgn
CreateRectRgn
CreateRectRgnIndirect
CreateRoundRectRgn
EqualRgn
ExtCreateRegion
FillRgn
FrameRgn
GetPolyFillMode
GetRegionData
GetRgnBox
InvertRgn
OffsetRgn
PaintRgn
PtInRegion
RectInRegion
SetPolyFillMode
SetRectRgn
Un1 2000-06-29
  • 打赏
  • 举报
回复
CreatePolygonRgn
Option Explicit '函数声明 Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal X As Long, _ ByVal Y As Long) As Long Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, _ ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, _ ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, _ ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long Const RGN_OR = 2 Dim I As Integer, j, myint, linex As Integer Dim Fullr, myColor, crn As Long Dim Region, PicWidth, PicHeight As Long Dim mystart, mybool As Boolean Private Sub Form_Load() Dim hDC As Long Me.Width = Picture1.Width '设置窗体宽度等于图形宽度 Me.Height = Picture1.Height '设置窗体宽度等于图形宽度 Picture1.ScaleMode = vbPixels '设置Picture1度量单位为像素 Picture1.AutoRedraw = True '设置Picture1自动重绘有效 Picture1.AutoSize = True '设置Picture1自动调整大小 Picture1.BorderStyle = vbBSNone '设置Picture1的边框样式 Me.BorderStyle = vbBSNone '设置窗体的边框样式 hDC = Picture1.hDC mystart = True mybool = False I = 0 j = 0 PicWidth = Picture1.ScaleWidth PicHeight = Picture1.ScaleHeight linex = 0 myColor = GetPixel(hDC, 0, 0) '获取picture1指定像素的rgb值 For j = 0 To PicHeight - 1 For I = 0 To PicWidth - 1 If GetPixel(hDC, I, j) = myColor Or I = PicWidth Then '透明像素 If mybool Then mybool = False crn = CreateRectRgn(linex, j, I, j - 1) '创建矩形区域 If mystart Then Fullr = crn mystart = False Else CombineRgn Fullr, Fullr, crn, RGN_OR '合并区域 DeleteObject CreateRectRgn(linex, j, I, j - 1) '删除透明区域 End If End If Else '非透明像素 If Not mybool Then mybool = True linex = I End If End If Next Next Region = Fullr SetWindowRgn Me.hWnd, Region, True '设置窗体区域 myint = 0 End Sub Private Sub Timer1_Timer() '形成动画 Dim hDC As Long myint = myint + 1 If myint = 1 Then Set Picture1.Picture = LoadPicture(App.Path & "\sz3.bmp") If myint = 2 Then Set Picture1.Picture = LoadPicture(App.Path & "\sz4.bmp") If myint = 3 Then Set Picture1.Picture = LoadPicture(App.Path & "\sz5.bmp") If myint = 4 Then Set Picture1.Picture = LoadPicture(App.Path & "\sz6.bmp") If myint = 5 Then myint = 0 hDC = Picture1.hDC mystart = True mybool = False I = 0 j = 0 Me.Width = Picture1.Width Me.Height = Picture1.Height PicWidth = Picture1.ScaleWidth PicHeight = Picture1.ScaleHeight linex = 0 myColor = GetPixel(hDC, 0, 0) '获取picture1指定像素的rgb值 For j = 0 To PicHeight - 1 For I = 0 To PicWidth - 1 If GetPixel(hDC, I, j) = myColor Or I = PicWidth Then '透明像素 If mybool Then mybool = False crn = CreateRectRgn(linex, j, I, j - 1) '创建矩形区域 If mystart Then Fullr = crn mystart = False Else CombineRgn Fullr, Fullr, crn, RGN_OR '合并区域 DeleteObject CreateRectRgn(linex, j, I, j - 1) '删除透明区域 End If End If Else '非透明像素 If Not mybool Then mybool = True linex = I End If End If Next Next Region = Fullr SetWindowRgn Me.hWnd, Region, True '设置窗体区域 End Sub Private Sub Picture1_Click() End End Sub
秘书智能排座软件 V1.2 版本于2011年9月16日正式发布。软件程序升级后,增加和修复了一些功能,放宽了一些限制,运行效率和执行效率更高,系统更加安全可靠。 办文、办会、办事既是办公室日常工作的重要组成部分,也是办公室履行职能的重要手段。 在办公室工作的同仁,每天都会举办、组织、参与、协调各级各类会议。召开会议就涉及到参加会议人员的排座问题,就餐问题,还有会议代表集体合影留念问题。 一般情况下,我们要事先排定与会或就餐者的座次,但目前的座次表全凭工作人员手工制作,工作繁琐,容易出错。参会人员临时因故不能参会或增加人员,这种情况在会议开始头一天甚至会前经常发生,工作人员就需要在已经编排好的Excel表格中再插入或删除人员的姓名,轮番的“复制、粘贴”。如果参会人员多,往往错一个人,就需要一两个小时,甚至半天时间才能修改完成,有的甚至来不及修改座次表。 在办公室十几年经常从事这种机械重复而又繁琐无味的工作,使我们萌生了开发一种智能软件,把我们已经形成并普遍接受的规矩通过计算机程序来完成。 我们基于GIS基础地理信息系统平台,采用VC6+GDI的模式,来实现会场和会标自定义、会议座位区域自定义、就座列排多少自定义、就餐接待主题自定义、表格宽窄餐桌大小自定义、姓名横竖排列自定义、姓名字号大小自定义、过道多少和宽窄自定义、排列优先级自定义、列号排号自定义、备注和页码自定义、正反排列自由选择、A3A416开纸张自由选择(需根据计算机配备打印机的要求)、纸张横排竖排自主选择、个体群体排列自由选择、座次排列全部自动生成、参会人员、就餐人员和照相人员座次自动生成等等,能将几个小时的手工操作缩短为几秒钟,极大地减轻办公室秘书和会务人员的劳动强度和劳动量,有效提高工作效率,表现出不凡的作用和优越的性能。 目前一般使用的软件只是把名单通过程序导入到Excel表中,然后人工进行添加内容并修改完善。而秘书智能排座软件不同于这种Excel制表,您可以直观地将表格任意移动、修改、调整、设置,其科学性、灵活性、实用性都是其他同类软件无法比拟的。 秘书智能排座软件现有16种基本排列方法,交叉使用可延伸出更多的排列方法,只要是目前我们会议需要的,都可以通过秘书智能排座软件来实现。 秘书智能排座软件:轻轻一点帮您解决会议、照相、宴会、考试座位排列、座次安排的全部问题。 会务精灵,秘书必备,快乐工作,白领时尚。 会议考试,宴会照相,只需一点,轻松给力。 《秘书智能排座位软件 V1.2 版本正式发布》一文转载自〖秘书工作〗网站,版权属于原作者,转载请注明出处。文章地址:http://www.msgz.org/Article/Class71/17537.html
数据可视化智能软件主要性能指标 1) 分布式实时数据库 A 软件应采用多线程的处理机制,分布式组件的设计支持负载均衡体系。 B 内置动态优化功能,可保证用户在访问一个窗口、鼠标动作等所产生的数据交互的快速 响应。 C 数据库支持远程访问重连及数据断点续传功能,使数据库之间的数据同步及完整性具有 了高可靠性的保障。 D 软件应内置的实时数据库支持无限分层和扩展并支持中英文的标签配置,可以按照"工厂 数据模型"来管理整个系统。可根据实际情况按照厂区、车间、区域、工段、单元的多级 分层,方便一线人员的查看与管理。 E 具有灵活的结构,支持用户自定义点类型及参数的使用,用户可根据实际需要自定义自 己的各类数据库结构模型,方便对数据的管理和查找。 F 支持丰富的点类型包括模拟IO点,数字IO点,控制点,累积点,运算点,组合点,雪崩 过滤点,滤波点,计数器点,定时器点,设备运行点,事故追忆点等,可满足用户不同 场景下的应用。 2) 数据采集 A 通讯调度设计符合OPC规范,提供全开放的IO通讯参数,可获取通讯状态及IO的通讯优化 参数; B 支持通讯负载均衡与通讯效率的动态优化; C 支持IO通信多"进程"调度模式,根据实际需要可自由选择与分配信道与设备的数量来分 配多个或单个进程管理,优化数据采集开销; D 具有较强的数据读写能力,支持批量下置功能,支持写优先的策略,保证现场工况突发 事件及时处理。 E 支持传输数据块的自动与手动分包,支持"数据块"的读取与转发; F 根据具体协议要求,通讯性能可支持访问速度达毫秒级; G 支持多种协议的设备挂在一条通讯链路,连接设备可达数百个; H 支持模拟量、数字量、SOE、二进制数据类型的采集 I 提供设备配置参数、通讯数据配置模板,支持通讯状态的在线诊断与在线配置参数; J 软件可提供3000个以上的IO通讯驱动程序,支持与国内外主流的设备的通信与联网等, 支持以协议宏开发方式进行驱动程序开发。 K 支持IEC101、IEC104、CDT、DNP3等远动规约的通讯;支持以OPC、MODBUS、IEC101、IE C104等协议对外转发数据完成联网。 L 支持不固定网络IP的模式下的网络通讯;支持多设备无线通讯能力,避免采用虚拟串口 方式,造成数据传输不稳定的隐患; 3) 组态开发 A 组态开发管理提供的是一体化集成的系统开发平台,组态开发管理平台能够提供良好的 远程运维功能,支持分布式网络节点下的工程开发和部署,对工程能够远程更新。 B 管理工具按照分布式系统统一管理系统内工程,如实时数据、历史库、采集器、人机界 面 、Web服务等,可实现工程的离线应用和在线修改。 C 支持工程模型的导入与导出、变量查找替换; D 支持窗口的新建、复制,支持多窗口的文件管理,支持窗口查找与定位; E 支持多达几百种过渡色、渐进色调色板,支持透明色处理; F 支持图元打组、智能单元可根据数据模型封装对象,可支持自定义属性和方法,形成动 态图库; G 支持变量动态注册机制,支持通过脚本访问自定义脚本函数; H 支持ActiveX控件脚本开放函数; I 支持增强的ADO脚本。 J 支持以GDIGDI+、FLASH、WPF、WCF技术来构建软件图形库,可嵌入各种格式(BMP、G IF、JPG、JPEG、CAD等)的图片。 K 软件提供具备丰富的"矢量"行业图库集,图库集具有自己的属性方法,可提供用户编写 脚本逻辑,图库设计参考行业软件设计标准,图库包括工控场合常见的符号之外,还具备 行业定制化专用图库如油田、燃气、楼宇、新能源等。 L 软件平台提供集成化的设计环境,对工程模板创建、数据模型与画面模型等都进行了完 整的"模板化设计",支持界面及模板分组、派生继承等功能。 M 软件平台提供的批量组态工具包括设备批量创建、设备信息导入导出、点表批量复制功 能。 N 支持不同格式的多媒体文件,包括支持幻灯片播放,图片显示(BMP、JPG、PNG),GIF 动画文件播放,Flash文件播放,Windows Media Player所支持的全部文件格式。 4) 工业报警 A 支持ISA18.2标准,可以单独设立报警服务器,独立管理报警的通知与存储。 B 支持工业现场报警"雪崩"处理,方便响应大型系统异常及紧急情况; C 支持千万条级别报警记录存储,并方便网络查询; D 支持报警处置与评论,并可根据业务形成报警知识库 E 支持高达10个条件报警判断(H5、H4、H3、HH、HI、LO、LL、L3、L4、L5); F 支持的报警类型有限值报警,偏差报警,变化率报警,开关量报警。可设置十种限值报 警,报警支持1-9999种优先级,报警可分0- 99组,每个报警点可设置最多10个报警标签。; G 支持实现对测点、区域、类型、级别的统计查

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧