Delphi 经典游戏程序设计40例 的学习 例3 图样的重叠与多重地图01
Xpat_Bmap :=TBitmap.Create; Xpat_Bmap.Width := 256; Xpat_Bmap.Height :=256; Rect_L :=Rect(0,0,256,256); Xpat_Bmap.Canvas.CopyMode :=cmSrcCopy; Xpat_Bmap.Canvas.CopyRect(Rect_L,Load_Bmap.Canvas,Rect_L); Xpat_Bmap.Canvas.Brush.Color :=clBlack; Xpat_Bmap.Canvas.BrushCopy(Rect_L,Load_Bmap,Rect_L,clWhite); Xpat_Bmap.Canvas.CopyMode :=cmMergePaint; Xpat_Bmap.Canvas.CopyRect(Rect_L,Load_Bmap.Canvas,Rect_L);
在例2的基础上增加的
核心代码
去除用模板的制作。
颜色标示 简单举例 ,某点 RGB 111 纯白 000,纯黑 ,100,红,010 绿,001蓝
原理 图样库定义一个透明色,纯白。 111
将图样库转换成 去除模板图样库,透明色和图样库相反,为纯黑,000 ,用的笔刷,黑色替换了所有白色
将图样库取反后 与 黑色000的透明色的图样库 或,这样 ,黑色还是黑色,其他有颜色的为全1 ,变成 全白了,
比如 原来图样是010,取反后 101 ,再或 111.
就是上面图片的样子了。
全0 ,全1 是不作为颜色使用的。 这里仅仅 简单举例 只用了了一位,好理解。 实际 R G B 的R是8位,或者 32位的。
用的都是 TBITMAP 这个 类的 函数,嗯,应该叫方法吧。
具体的有creat ,
canvas ,画布,子类?
copymode canvas 的属性?
bursh 画布的子类?
color 刷子的属性?
burshcopy ,copyrec ,画布的方法?
一知半解,此书也没有讲解这些。