|
#1
|
||||
|
||||
Гексагоны
У меня проблемма в следующем коде отрисовки гексагонов.
Имеется гексагон в файле Temp.bmp (в аттаче), надо их плотно утрамбовать (как пчелинные соты), у меня же получаеться совсем нето, куча разрывов и т. д. в m стринглисте храняться индефикаторы какую картинку загружать, там везде A. fmain.MAP - Timage на форме fmain. Код процедуры отрисовки: Код:
procedure drawm; var PIC: TBitmap; i,k,d,f,l: integer; c: char; s: string; begin s:=''; f:=1; l:=4; PIC:=TBitmap.Create; PIC.Height:=20; PIC.Width:=30; PIC.Transparent:=True; for i:=0 to 19 do begin s:=m.Strings[i]; if f<2 then begin f:=f+1; end else begin f:=1; end; for k:=1 to 40 do begin c:=s[k]; if c='A' then begin PIC.LoadFromFile('Temp.bmp'); if f=1 then fmain.MAP.Canvas.Draw(k*30-21,i*20,PIC); if f=2 then fmain.MAP.Canvas.Draw(k*30,i*20-4,PIC); end; end; end; PIC.Destroy; end; Пожалуйста помогите найти и исправить ошибки. 00110001 00101100 00110110 00110001 00111000 00110000 00110011 00110011 00111001 00111000 00111000 00110111 00110100 00111001 00111000 00111001 00110100 00111000 00110100 00111000 00110010 00110000 00110100 00110101 00111000 00110110 00111000 00110011 00110100 00110011 00110110 00110101 00110110 |
#2
|
||||
|
||||
Получилось!!!
Решил проблему, если кому интересно:
Код:
procedure drawm; var PIC: TBitmap; i,k,f,d: integer; c: char; s: string; begin s:=''; f:=4; PIC:=TBitmap.Create; PIC.Height:=20; PIC.Width:=30; PIC.Transparent:=True; for i:=0 to 19 do begin s:=m.Strings[i]; for k:=1 to 4 do begin c:=s[k]; if c='A' then begin PIC.LoadFromFile('Temp.bmp'); end; if c='B' then begin PIC.LoadFromFile('Green.bmp'); end; if c='C' then begin PIC.LoadFromFile('Red.bmp'); end; if c='D' then begin PIC.LoadFromFile('Yellow.bmp'); end; if i mod 2>0 then d:=20 else d:=0; fmain.MAP.Canvas.Draw(k*30-d,i*20-f,PIC); end; f:=f+4; end; PIC.Destroy; end; 00110001 00101100 00110110 00110001 00111000 00110000 00110011 00110011 00111001 00111000 00111000 00110111 00110100 00111001 00111000 00111001 00110100 00111000 00110100 00111000 00110010 00110000 00110100 00110101 00111000 00110110 00111000 00110011 00110100 00110011 00110110 00110101 00110110 |