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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.09.2007, 01:09
kashita kashita вне форума
Прохожий
 
Регистрация: 22.09.2007
Сообщения: 12
Репутация: 10
По умолчанию вывод картинок с проверкой

Всем привет.
подскажите как реализовать:
имеется форма, на ней находиться ComboBox(1,2,3,4,5,6), так же имеется около 30 картинок(1.bmp,2.bmp,3.bmp,4.bmp,5.bmp ... 30.bmp).
необходимо чтобы при выборе разных значений боксе, выводились на экран картинки(например выбрали 1 - вывелось с 1 по 6 картинки; выбрали 2 - вывелось с 13 по 20; ну и т.п) вотЪ, и вся загвоздка с выводом красиво картинок, чтоб они выводились а-ля таблица примерно так
1 2 3
4 13 14
20 21 30

подскажите как реализовать вывод картинок с проверочкой так...

заранее спасибо)
Ответить с цитированием
  #2  
Старый 22.09.2007, 03:05
Аватар для zip000
zip000 zip000 вне форума
Начинающий
 
Регистрация: 24.07.2007
Сообщения: 194
Репутация: 25
По умолчанию

Вот. Картинки будут рисоваться прямо на форме в синих прямоугольниках и будут вписываться в определенный прямоугольник (непропорционально).
Код:
const
  NumBitmaps   = 30; // Количество битмапов
  PreviewSizeX = 200; // Ширина прямоугольника
  PreviewSizeY = 100; // Высота прямоугольника
  RectBorder   = 3; // Размер границы изображений
  NumColumns   = 3; // Количество столбцов изображений
  OffsetY      = 50; // Откуда будут рисоваться изображения по вертикали

var
  Bitmaps : array [0..NumBitmaps - 1] of TBitmap; // Массив нужных битмапов

// Эта процедера собсно отрисовывает картинки начианая с FromImg заканчивая ToImg.
procedure DrawImages(FromImg, ToImg : Integer);
var
  i : Integer;
  r : TRect;
begin
  for i := FromImg to ToImg do
    with Form1.Canvas do begin
      Pen.Width := RectBorder;
      SetRect(r, PreviewSizeX * ((i - FromImg) mod NumColumns),
                 OffsetY + PreviewSizeY * ((i - FromImg) div NumColumns),
                 PreviewSizeX * (1 + ((i - FromImg) mod NumColumns)),
                 OffsetY + PreviewSizeY * (1 + (i - FromImg) div NumColumns));
      Rectangle(r);
      with r do begin
        Left   := Left   + RectBorder;
        Right  := Right  - RectBorder;
        Top    := Top    + RectBorder;
        Bottom := Bottom - RectBorder;
      end;
      StretchDraw(r, Bitmaps[i]);
    end;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Canvas.Pen.Width := 0;
  Canvas.FillRect(ClientRect);
  Refresh;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
  // Здесь задаете какие картинки рисовать в зависимости от того что выбрано в ComboBox1
  case ComboBox1.ItemIndex of
    0 : DrawImages(0, 5);
    1 : DrawImages(6, 11);
    2 : DrawImages(12, 17);
    3 : DrawImages(18, 23);
    4 : DrawImages(24, 29);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i : Integer;
begin
  for i := 0 to NumBitmaps - 1 do begin
    Bitmaps[i] := TBitmap.Create;
    Bitmaps[i].LoadFromFile(IntToStr(i) + '.bmp');
  end;
  Canvas.Pen.Color   := clBlue; // Здесь можно изменить цвет границ картинок
  Canvas.Brush.Color := Color;
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
  i : Integer;
begin
  for i := 0 to NumBitmaps - 1 do
    Bitmaps[i].Free;
end;
Можете поиграться со значением констант и посмотреть что будет.
__________________
Не профи, но и не чайник . D6 - лучше не придумали. Пока.
Ответить с цитированием
  #3  
Старый 22.09.2007, 05:18
kashita kashita вне форума
Прохожий
 
Регистрация: 22.09.2007
Сообщения: 12
Репутация: 10
По умолчанию

спасибо, завтра, а точнее уже сегодня, попробую помудрить)
Ответить с цитированием
  #4  
Старый 23.09.2007, 16:54
kashita kashita вне форума
Прохожий
 
Регистрация: 22.09.2007
Сообщения: 12
Репутация: 10
По умолчанию

ну с картинками я разобрался, почти) сделал просто несколько компонентов TImage, и в них подгружаю что надо... ну вот теперь другая проблема, с выводом картинок штук по 9 все ок, а как быть если надо допустим все 30-50 картинок вывести?

например может сделать несколько панелей одинакого размера, и кнопки перехода между ними, и просто с .visible для панелей помудрить? или может есть чегото более простое?
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter