背景图 + 前图
代码
unit rei40_02; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TRein40_02 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormPaint(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); private { Private declarations } public { Public declarations } end; // procedure MakeMapClean; const Yoko = 37; Tate = 27; var Rein40_02: TRein40_02; Ptmap1: array[0..(37 * 27 - 1)] of Byte = ( 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,10, 11, 1, 1, 1, 1, 7, 7, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 7, 7, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 9, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 7, 7, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,10,11, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 ); Ptmap2: array[0..36, 0..26] of Byte = ( (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,4,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,4,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2,12,12,12,12), (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2,12,12,12,12), (2,2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2, 2, 2, 2,12,12,12,12,12,12), (2,2,2,2,2,2,2,2,4,2,2,2,2,2,2,2,2,2, 2, 2, 2,12,12,12,12,12,12), (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2,12,12,12,12), (2,2,2,5,6,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2,12,12,12,12), (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,3,2,2,2,2,2,2,2,2,2,2,12,12,12,12,12,12,12,12,12), (2,2,2,2,2,2,2,4,2,2,2,2,2,2,2,2,2,2,12,12,12,12,12,12,12,12,12), (2,2,2,2,2,2,2,2,2,2,2,3,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12), (2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2, 2, 2, 2, 2, 2, 2,12,12) ); Ptmap3: array[0..36, 0..26] of Byte = ( (2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2,0), (2,2,2,2,2,3,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2,0), (2,2,2,2,2,4,2,2, 2,2,2,2,2,2, 0,2,2,3,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 2,2,2,2,2,2,12,2,2,4,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 2,2,2,2,2,2,12,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 2,2,3,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 2,2,4,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,3,2,2,0), (2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,4,2,2,0), (2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,3, 2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,4, 2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,2,12,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,2,12,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,3,2, 0,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,4,2, 0,2,2,2,2,2, 0,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 0,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 0,2,2,2,2,2, 2,2,3,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,3,2,2, 0,2,2,2,2,2, 2,2,4,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,4,2,2, 0,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,5,6,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,3,2,2,0), (2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,3,2,2,2,12,2,2,4,2,2,0), (2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,4,2,2,2,12,2,2,2,2,2,0), (2,2,2,2,2,2,3,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 0,2,2,2,2,2,0), (2,2,2,2,2,2,4,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2,0), (2,2,2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2, 2,2,2,2,2,2,0) ); Ptmap4: array[0..36, 0..26] of Byte = ( (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17,17,17,17,17,17,17,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,18,18,18,18,18,18,18,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0,17,17,17,17,17,17,17,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0,18,18,18,18,18,18,18,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0,17,17,17,17,17,17,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0,18,18,18,18,18,18,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,17,17, 17,17,17,17,17, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,18,18, 18,18,18,18,18, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7) ); Load_Bmap : TBitmap; Make_Bmap : TBitmap; Xpat_Bmap : TBitmap; P,PX,PY,Xdip : Byte; Rect_L,Rect_M : TRect; implementation {$R *.dfm} procedure TRein40_02.FormCreate(Sender: TObject); begin Rein40_02.Height := 480; Rein40_02.Width :=640; Button1.Height :=25; Button1.Width :=25; Button1.Top :=16; Button1.Left :=603; Button2.Height :=25; Button2.Width :=25; Button2.Top := 56; Button2.Left :=603; Button3.Height :=25; Button3.Width :=25; Button3.Top :=96; Button3.Left :=603; Button4.Height :=25; Button4.Width :=25; Button4.Top := 136; Button4.Left :=603; Button5.Height :=25; Button5.Width :=25; Button5.Top :=176; Button5.Left :=603; Button6.Height :=25; Button6.Width :=25; Button6.Top := 216; Button6.Left :=603; Load_Bmap := TBitmap.Create; Load_Bmap.LoadFromFile(GetCurrentDir + '\Pat_Sample.bmp'); 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); Make_Bmap := TBitmap.Create; Make_Bmap.Width := Yoko * 16; Make_Bmap.Height := Tate * 16; Xdip :=0; end; procedure MakeMapClean; begin with Make_Bmap do begin Canvas.Brush.Color := clRed; Canvas.FillRect(Rect(0,0,Yoko*16,Tate*16)); end; end; procedure TRein40_02.Button1Click(Sender: TObject); var X,Y : Byte; begin //MakeMapClean; Make_Bmap.Canvas.CopyMode := cmSrcCopy ; for Y :=0 to (Tate -1) do for X :=0 to (Yoko - 1) do begin p := Ptmap1[ Y* Yoko + X] ; if p <> 0 then begin PX :=(p mod 16) * 16; PY :=(p div 16) * 16; Rect_L := Rect(PX,PY,PX+16,PY+16); Rect_M := Rect(x*16,y*16,x*16+16,y*16+16); Make_Bmap.Canvas.CopyRect(Rect_M,Load_Bmap.Canvas,Rect_L); end; end; Rein40_02.Canvas.CopyMode := cmSrcCopy; Rein40_02.Canvas.Draw(0,0,Make_Bmap); end; procedure TRein40_02.FormPaint(Sender: TObject); begin Rein40_02.Canvas.CopyMode := cmSrcCopy; Rein40_02.Canvas.Draw(0,0,Make_Bmap); if Xdip = 1 then Rein40_02.Canvas.draw(0,0,Xpat_Bmap); end; procedure TRein40_02.FormClose(Sender: TObject; var Action: TCloseAction); begin Load_Bmap.Free; Make_Bmap.Free; Xpat_Bmap.Free; end; procedure TRein40_02.Button2Click(Sender: TObject); var X,Y : Byte; begin // MakeMapClean; Make_Bmap.Canvas.CopyMode := cmSrcCopy; for y:=0 to (Tate-1) do for x:=0 to (Yoko-1) do begin p := ptmap2[x,y]; if p <> 0 then begin PX := (p mod 16) *16 ; PY := (p div 16) *16 ; Rect_L := Rect(PX,PY,PX+16,PY+16); Rect_M := Rect(x*16,y*16,x*16+16,y*16+16); Make_Bmap.Canvas.CopyRect(Rect_M,Load_Bmap.Canvas,Rect_L); end; end; Rein40_02.Canvas.CopyMode := cmSrcCopy; Rein40_02.Canvas.Draw(0,0,Make_Bmap); end; procedure TRein40_02.Button3Click(Sender: TObject); begin // MakeMapClean; Rein40_02.Canvas.Draw(0,0,Xpat_Bmap); Xdip :=1; end; procedure TRein40_02.Button4Click(Sender: TObject); var x,y :Byte; begin //MakeMapClean; Make_Bmap.Canvas.CopyMode := cmSrcCopy; for y:=0 to (Tate-1) do for x:=0 to (Yoko-1) do begin p := Ptmap3[x,y]; if p <> 0 then begin PX := (p mod 16) *16; PY := (p div 16) *16; Rect_L :=Rect(PX,PY,PX+16,PY+16) ; Rect_M :=Rect(x*16,y*16,x*16+16,y*16+16); Make_Bmap.Canvas.CopyRect(Rect_M,Load_Bmap.Canvas,Rect_L); end; end; for y:=0 to (Tate-1) do for x:=0 to (Yoko-1) do begin p := Ptmap4[x,y]; if p <>0 then begin PX := (P mod 16) *16; PY := (p div 16) *16; Rect_L := Rect(PX,PY,PX+16,PY+16); Rect_M := Rect(x*16,y*16,x*16+16,y*16+16); Make_Bmap.Canvas.CopyMode := cmSrcPaint; Make_Bmap.Canvas.CopyRect(Rect_M,Xpat_Bmap.Canvas,Rect_L); Make_Bmap.Canvas.CopyMode := cmSrcAnd; Make_Bmap.Canvas.CopyRect(Rect_M,Load_Bmap.Canvas,Rect_L); end; end; Rein40_02.Canvas.Draw(0,0,Make_Bmap) ; Xdip :=0; end; procedure TRein40_02.Button5Click(Sender: TObject); var x,y :Byte; begin // MakeMapClean; Make_Bmap.Canvas.CopyMode := cmSrcCopy; for y:=0 to (Tate-1) do for x:=0 to (Yoko-1) do begin p := ptmap3[x,y]; if p <> 0 then begin PX := (p mod 16) *16 ; PY := (p div 16) *16 ; Rect_L := Rect(PX,PY,PX+16,PY+16); Rect_M := Rect(x*16,y*16,x*16+16,y*16+16); Make_Bmap.Canvas.CopyRect(Rect_M,Load_Bmap.Canvas,Rect_L); end; end; Rein40_02.Canvas.CopyMode := cmSrcCopy; Rein40_02.Canvas.Draw(0,0,Make_Bmap); end; procedure TRein40_02.Button6Click(Sender: TObject); var x,y :Byte; begin // MakeMapClean; Make_Bmap.Canvas.CopyMode := cmSrcCopy; for y:=0 to (Tate-1) do for x:=0 to (Yoko-1) do begin p := ptmap4[x,y]; if p <> 0 then begin PX := (p mod 16) *16 ; PY := (p div 16) *16 ; Rect_L := Rect(PX,PY,PX+16,PY+16); Rect_M := Rect(x*16,y*16,x*16+16,y*16+16); Make_Bmap.Canvas.CopyRect(Rect_M,Load_Bmap.Canvas,Rect_L); end; end; Rein40_02.Canvas.CopyMode := cmSrcCopy; Rein40_02.Canvas.Draw(0,0,Make_Bmap); end; end.
背景图
前图
问题 :重复点按钮图会乱,原来的图不会消除。
自己做了一个 过程,
procedure MakeMapClean;
但是这个过程 不能放倒 类里面说明,奇怪。
procedure MakeMapClean;
begin
with Make_Bmap do
begin
Canvas.Brush.Color := clRed;
Canvas.FillRect(Rect(0,0,Yoko*16,Tate*16));
end;
end;
是对 Make_Bmap 刷红, 还是不行。
应该是对 FORM 的canvas 进行 刷会底色吧。
procedure CleanScreen;
begin
with Rein40_02 do
begin
Canvas.Brush.Color := clWhite;
Canvas.FillRect(Rect(0,0,Yoko*16,Tate*16));
end;
end;
还是不行,
应该是 P<>0的时候没有对 Makemap 进行贴图处理,
研究下 。
就是这个问题,
为了省掉 处理 空图 的贴图 处理 ,实际也不算是BUG
但是 为什么我写的 PROCUDURE 为什么不能放倒 CLASS里面?