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   ,画布的方法?

一知半解,此书也没有讲解这些。