![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
вывод части Bitmap
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-ю панелями; по нажатию на панель скрывать её.