内容简介:使用 Win2D 绘制图片和绘制椭圆都非常容易,可是如何使用 Win2D 绘制图片纹理的椭圆呢?你可以看到这个小球就像一个透明塑料小球一样,纹理会跟随背景而动。这显然不是
使用 Win2D 绘制图片和绘制椭圆都非常容易,可是如何使用 Win2D 绘制图片纹理的椭圆呢?
重力迷宫小球
▲ 重力迷宫
你可以看到这个小球就像一个透明塑料小球一样,纹理会跟随背景而动。这显然不是 Win2D 中的游戏循环:CanvasAnimatedControl 一文中我用 DrawEllipse
画的那个灰色小球。
Win2D 实现
我们会使用到 Win2D 中的多种特效:
-
MorphologyEffect
- 用于将背景那些红色的洞洞转换成较虚的形态,以便球看起来不是扁平的。
- 不是必要的,只是为了好看而已。
-
CropEffect
- 将背景区域裁剪成一个较小的区域。
- 不是必要的。
-
AlphaMaskEffect
- 使用透明度蒙版使得图片只露出椭圆部分。
- 这是绘制椭圆必要的特效。
-
ShadowEffect
- 做一个小球的阴影。
- 不是必要的。
要画出图片纹理的椭圆,只需要这么一点代码即可:
using (var list = new CanvasCommandList(creator)) { using (var s = list.CreateDrawingSession()) { s.FillEllipse(_xPosition, _yPosition, _radius, _radius, Colors.Black); } var mask = new AlphaMaskEffect { Source = bitmap, AlphaMask = list, }; ds.DrawImage(mask); }
▲ 带图片纹理的椭圆
现在,如果你希望获得本文一开始获得的那种奇妙的效果,可以添加更多的特效:
var bitmap = _game.Material.bitmap; var morphology = new MorphologyEffect { Source = bitmap, Mode = MorphologyEffectMode.Dilate, Width = 40, Height = 40, }; var crop = new CropEffect { Source = morphology, SourceRectangle = new Rect( _xPosition - _radius, _yPosition - _radius, _radius + _radius, _radius + _radius), }; using (var list = new CanvasCommandList(creator)) { using (var s = list.CreateDrawingSession()) { s.FillEllipse(_xPosition, _yPosition, _radius, _radius, Colors.Black); } var mask = new AlphaMaskEffect { Source = crop, AlphaMask = list, }; var shadow = new ShadowEffect { Source = mask, BlurAmount = 4, ShadowColor = Color.FromArgb(0x40, 0x00, 0x00, 0x00), }; ds.DrawImage(shadow); ds.DrawImage(mask); }
关于 CanvasCommandList
上面的例子中,我们是用到了 CanvasCommandList
。它可以帮助我们将绘制命令先绘制到一个缓存的上下文中,以便被其他绘制上下文进行统一的处理。
阅读林德熙的博客了解更多 CanvasCommandList
的资料: win2d CanvasCommandList 使用方法 - 林德熙 。
本文会经常更新,请阅读原文: https://walterlv.com/post/draw-bitmap-ellipse-using-win2d.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接:https://walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (walter.lv@qq.com) 。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 有趣的椭圆曲线加密
- Golang 椭圆加密算法实现
- UWP 将图片裁剪成圆形(椭圆)
- css3实现椭圆轨迹旋转
- 每日一个css效果之自适应椭圆
- 区块链语言Solidity校验椭圆曲线加密数字签名(附实例)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
创业就是要细分垄断
李开复、汪华、傅盛 / 文化发展出版社 / 2017-5-1 / CNY 45.00
对各方面资源极为有限的创业公司而言,想在激烈的市场竞争中站立下来的第一步是:成为细分市场的垄断者。不管是资本还是尖端人才,追逐的永远是行业里尖端的企业,第二名毫无意义。 首先,要精准定位潜在市场。这个市场的需求仍没有被满足,并且潜力巨大。其次,抓住时代和行业的红利,通过高速增长实现“小垄断”,抢滩登陆。最后,在细分领域里建立起自己的竞争壁垒,应对巨头和竞争对手的复制,去扩展更大的市场,从而扩......一起来看看 《创业就是要细分垄断》 这本书的介绍吧!