Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

вывод части Bitmap


Страницы:   1 2 3

valussev@mail.ru ©   (2009-12-24 19:06:00) 

всем привет, возникла такая необходимость:

есть картинка в битмапе
область где должна быть выведена картинка разбита допустим на 16 равных квадратов
как сделать так, чтобы при нажатии на 1 из этих квадратов открывалась часть картинки из битмапа?

пробовал делать через массивы


pole: array[1..H, 1..W] of byte;
   ex,ey: integer; // координаты пустой клетки

   // правильное расположение клеток
   stp : array[1..H, 1..W] of byte =
   (( 1, 2, 3, 4),
    ( 5, 6, 7, 8),
    ( 9,10,11,12),
    (13,14,15, 0));

for i:=1 to H do
for j:=1 to W do
pole[i,j] := stp[i,j];

но что то не получается
заранее спасибо


Омлет   (2009-12-24 22:43:00) [41]

> Все можно сделать предельно просто. Отрисовывать нужные
> части картинки в ячейках DrawGrid ...

весело )))


Amoeba   (2009-12-24 22:17:00) [42]


> RWolf ©   (24.12.09 19:15) [1]
>
> закрыть рисунок 16-ю панелями; по нажатию на панель скрывать
> её.

Это нерационально.

Все можно сделать предельно просто. Отрисовывать нужные части картинки в ячейках DrawGrid c GridLineWidth = 0 и DefaultDrawing = False (соответственно) в событии OnDrawCell (при этом в коде не должно быть if gdFocused in State then Canvas.DrawFocusRect(Rect);). Информацию о том, на каких ячейках щелкнули (и соответственно в каких рисовать) сохранять  в двумерном массиве.


Джо   (2009-12-24 21:30:00) [43]

И зачем массивы?
У вас есть ширина-высота картинки, есть координаты, где щелкнул пользователь, есть равные квадраты. Определяете по координатам нужный квадрат и выводите его из заранее загруженной в TBitmap картинки.


Джо   (2009-12-24 21:28:00) [44]

Совершенно из вашего примера непонятно, как вы, собственно выводите картинку. Я бы сделал посредством BitBlt, очень удобно.


RWolf   (2009-12-24 20:29:00) [45]

вызовом метода SetBounds.


valussev@mail.ru   (2009-12-24 19:18:00) [46]

а как их тогда с маштабировать? если рисунок разных размеров?


RWolf   (2009-12-24 19:15:00) [47]

закрыть рисунок 16-ю панелями; по нажатию на панель скрывать её.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо