VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
楼主: 八戒2

擂台赛第59期[多边形交集]

[复制链接]
发表于 2009-5-6 18:10:49 | 显示全部楼层
我来水一个假的...

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1威望 +8 收起 理由
VBProFan + 8 只能用两个字来形容:牛×。

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-6 23:30:24 | 显示全部楼层
ben1222,好快啊
使用API不算,但可以用它来验证

[ 本帖最后由 八戒2 于 2009-5-7 07:03 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2009-5-7 11:32:56 | 显示全部楼层
原帖由 八戒2 于 2009-5-6 23:30 发表
ben1222,好快啊
使用API不算,但可以用它来验证


哈哈,八戒也看出了是用 API的?
我只看到了一个:

Polygon

The Polygon function draws a polygon consisting of two or more vertices connected by straight lines. The polygon is outlined by using the current pen and filled by using the current brush and polygon fill mode.
BOOL Polygon(
  HDC hdc,                // handle to device context
  CONST POINT *lpPoints,  // pointer to polygon's vertices
  int nCount              // count of polygon's vertices
);

Parameters
hdc
Handle to the device context.
lpPoints
Pointer to an array of POINT structures that specify the vertices of the polygon.
nCount
Specifies the number of vertices in the array. This value must be greater than or equal to 2.

Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero.


至于交集的颜色不同估计是用了 XOR 画笔来填充两个多边形吧。。。

[ 本帖最后由 VBProFan 于 2009-5-7 11:35 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2009-5-7 11:41:32 | 显示全部楼层

回复 #13 VBProFan 的帖子

眼光真犀利...的确是用xor pen水出来的...
很假吧...
回复 支持 反对

使用道具 举报

发表于 2009-5-7 12:54:01 | 显示全部楼层
不是用两次CreatePolygonRgn然后再CombineRgn吗……API确实不算……不过这个是有专门的算法的,只用处理顶点的数据……所以我就不来凑热闹了……
回复 支持 反对

使用道具 举报

发表于 2009-5-8 10:52:01 | 显示全部楼层

回复 #15 acme_pjz 的帖子

肯定没用 CombineRgn,Combine 后就只有一个 Rgn 了,还怎么 Xor 啊?
应该是先用 Solid Brush 画第一个 Polygon,然后再用 Xor Brush 画第二个 Polygon
回复 支持 反对

使用道具 举报

发表于 2009-5-8 11:12:51 | 显示全部楼层
不用Xor 就可以
先一个Rgn,再一个Rgn,交集就显出
回复 支持 反对

使用道具 举报

发表于 2009-5-8 11:15:37 | 显示全部楼层
DrawMode 属性
      

返回或设置一个值,以决定图形方法的输出外观或者 Shape 及 Line 控件的外观。

语法

object.DrawMode [= number]

DrawMode 属性语法包含下面部分:

部分 描述
object 对象表达式,其值是“应用于”列表中的一个对象。
Number 整型值,指定外观,“设置值”中有详细描述。


设置值

number 的设置值为:

常数 设置值 描述
VbBlackness 1 黑色。
VbNotMergePen 2 非或笔 - 与设置值 15 相反 (Merge Pen)。
VbMaskNotPen 3 与非笔 - 背景色以及画笔反相二者共有颜色的组合。
VbNotCopyPen 4 非复制笔 - 设置值 13 (Copy Pen) 的反相
VbMaskPenNot 5 与笔非 - 画笔以及显示反相二者共有颜色的组合。
VbInvert 6 反转 - 显示颜色的反相
VbXorPen 7 异或笔 - 画笔的颜色以及显示颜色的组合,只取其一。
VbNotMaskPen 8 非与笔 - 设置值 9 (Mask Pen) 的反相。
VbMaskPen 9 与笔 - 画笔和显示二者共有颜色的组合。
VbNotXorPen 10 非异或笔 - 方式 7 的反相 (Xor Pen)。  
VbNop 11 无操作 - 输出保持不变。该设置实际上关闭画图。
VbMergeNotPen 12 或非笔 - 显示颜色与画笔颜色反相的组合。
VbCopyPen 13 复制笔(缺省值) - 由 ForeColor 属性指定的颜色。
VbMergePenNot 14 或笔非 - 画笔颜色与显示颜色的反相的组合。
VbMergePen 15 或笔 - 画笔颜色与显示颜色的组合。
VbWhiteness 16 白色。


说明

当用 Shape 或 Line 控件,或者用图形方法画图时,使用这个属性产生可视效果。Visual Basic 将绘图模式的每一个像素与现存背景色中相应的像素做比较,然后进行逐位比较操作。例如,设置值 7(异或笔)用 Xor 操作符将绘图模式像素和背景像素组合起来。

DrawMode 设置值的真正效果,取决于运行时所画线的颜色与屏幕已存在颜色的合成。对于设置值 1,6,7,11,13 和 16 可以最可靠地预知该属性的输出结果。
回复 支持 反对

使用道具 举报

发表于 2009-5-8 11:40:49 | 显示全部楼层
同一画刷

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2009-5-8 13:47:17 | 显示全部楼层

回复 #16 VBProFan 的帖子

Private Const RGN_AND As Long = 1 '<--就是这个
Private Const RGN_COPY As Long = 5
Private Const RGN_DIFF As Long = 4
Private Const RGN_OR As Long = 2
Private Const RGN_XOR As Long = 3
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-7-3 17:12

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表