是否可以创建圆形(或任何其他非矩形)图像?

Ani*_*han 13 png image-manipulation image

我看到的所有圆盘形图像实际上都在一个矩形框内,并且侧面(下图中的黑色部分)是透明的.

圆盘形图像

是否可以自己制作圆形帆布?或者图像总是设计成矩形?

如果有,怎么样?

Car*_*ond 8

你是对的,任何非矩形图形确实存在于与轴对齐的边界矩形内.它就是这样做的,因为矩形很容易处理.整个显示器本身只是像素的矩形排列.

确定一个点是否在矩形内是非常容易的:如果X坐标位于给定的Xmin和Xmax点之间,并且Y坐标位于Ymin和Ymax之间,则该点位于矩形中.并且这两个测试是独立的 - Xmin和Xmax值不依赖于Y值,反之亦然.这比确定点是否位于圆形,三角形或任何其他形状中更容易,您需要乘法或大型查找表等操作.

并考虑窗口系统中发生的基本操作.首先,它必须在屏幕上呈现完整的图片.系统内部有一堆重叠的窗口来表示,为了形成图片,它必须决定屏幕上每个像素需要的颜色.这对于矩形来说是最简单的.系统扫描每一行和每列,并使用简单边界测试确定包含给定X,Y坐标的最上面的窗口.然后由窗口选择像素的颜色.

相反,当在屏幕上的某处单击鼠标时,系统必须确定单击了哪个窗口或对象,然后向其发送单击消息.它实际上是同样的问题,可以通过沿着重叠对象列表向下走,并根据每个对象的矩形极限测试鼠标指针坐标来轻松处理.

这两个基本操作可以在软件中轻松完成,甚至可以在专用硬件中完成.其他一些不基于矩形的方法会有更多的工作要做.