代码来自Qt库,它有助于生成具有图像形状的按钮;它扫描所有行y和所有宽度x,当像素的rgb部分与屏蔽部分重合时产生以下变化(mp是行开头的指针,并且预填充0xff):
*(mp +(x>&gt; 3))&amp; =〜(1 <&lt;(x&amp; 7));
我无法解释它;有背景的人可以伸手吗?
答案 0 :(得分:1)
从代码的外观来看,mp指向每像素1位图像的当前行。代码清除表示X处像素的位。它将X偏移转换为字节偏移(x>> 3),然后逻辑AND是字节,其中从反向1创建的掩码向左移位X位置字节。
答案 1 :(得分:0)
tmask已经预先填充了0xff,所有的;这意味着它在&amp; =操作时将是被动的,保留rhs的命令;这意味着如果在if语句中有一个命中,检查特定像素是否等于背景,则执行此行,我们将擦除与该像素相关的特定位;