求助如何使用 GDI+ 绘画一堆自然的小点点

2019-09-16 11:40:47 +08:00
 daijinming

GDI+中只能这么画点: bitmap.SetPixel(iColumn, iRow, color); ,可是这只是设置一个像素点,如何能模拟出现实中的点,有大有小,有深有浅,形状不规则,求思路

2041 次点击
所在节点    程序员
15 条回复
ysc3839
2019-09-16 12:28:39 +08:00
你这个问题和 GDI 什么的无关,大概是计算机图形学的范畴,可能涉及到 3D 渲染了。
InternetExplorer
2019-09-16 12:33:06 +08:00
有大小的叫圆
xiri
2019-09-16 12:34:32 +08:00
同上,按你的描述,那叫圆,不是点
shawndev
2019-09-16 13:15:57 +08:00
像素是成像的最小单位,没办法做到有大有小。有大有小的那叫图形,属于计算机图形学的范畴。
littlewing
2019-09-16 13:17:08 +08:00
点是没有部分(μέρος)的东西”。点没有部分,所以也就没有大小[6]。

在欧几里得几何中,点是空间中只有位置,没有大小的图形

https://zh.wikipedia.org/wiki/%E7%82%B9
nicebird
2019-09-16 13:21:44 +08:00
画圆
wmhx
2019-09-16 14:22:36 +08:00
你画大小不一的实心圆 不就 o 了?
shirokow
2019-09-16 14:24:07 +08:00
lz 想要的是二维高斯函数的渐变效果吗
shirokow
2019-09-16 14:25:49 +08:00
@shirokow 不规则的效果可以试试 perlin noise
daijinming
2019-09-16 14:39:08 +08:00
@shirokow 二维高斯函数 这个好专业,能解释下吗, 看到 noise 估计就差不多来,就是设置一些干扰点用的
BirlGoy
2019-09-16 14:48:53 +08:00
应该要用到 gdi+的 path。 思路是用颜色填充路径。其中路径可以是圆、方形、不规则图形等。
smilenceX
2019-09-16 14:52:14 +08:00
看你提到“干扰点”,不负责地猜你是要生成验证码之类的东西。
如果是这样的话,随机生成 x,y 作为圆心,再用随机的半径画圆就行了,同样,填充的颜色也可以随机。
shirokow
2019-09-16 15:18:08 +08:00
@daijinming 就是一维正态分布绕 Y 轴旋转一下的结果。这种图案就是边缘平滑一些
andychen20121130
2019-09-17 00:22:14 +08:00
5 个像素当成一个像素不就可以了
nvioue
2019-09-17 10:05:58 +08:00
现在还有 win32 编程!!看来是微软粉。不过我记得 gdi 这个东西早就 deprecated 吧?? 直接上 directwrite 可行?除非你要兼容 xp

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/601109

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX