Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.01.2008, 13:31
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию Гексагоны

У меня проблемма в следующем коде отрисовки гексагонов.
Имеется гексагон в файле 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;

Пожалуйста помогите найти и исправить ошибки.
Изображения
Тип файла: bmp Temp.bmp (1.8 Кбайт, 16 просмотров)
__________________
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  
Старый 10.01.2008, 14:57
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию Получилось!!!

Решил проблему, если кому интересно:

Код:
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
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:11.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter