Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2009, 21:16   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Показ части изображения

На схеме показано, чего я хочу добиться, но попытаюсь пояснить: на форме расположен Image с именем PicBuf и свойством Visible = Flase. Размер 4096 х 3072. (т.е. 1024*4 и 768*4). И также на форме находится Image с именем Pic и свойствами Visible = True и 1024*768. В процессе создания формы (OnCreate) В PicBuf загружается изображение 4096*3072. По действию таймера на Pic должна нарисоваться часть картинки PicBuf размером 1024*768 (выбор координаты - рандом). Думал рисовать при помощи Pic.Canvas.CopyRect(Rect(0,0,1024,7 68),PicBuf.Canvas,rect(0,0,1024,768 )), но при изменении любого значения он начинает сжимать или растягивать рисунок. Чем можно реализовать данную вещь?
Изображения
Тип файла: jpg Схема.jpg (8.2 Кб, 160 просмотров)
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 12.06.2009, 21:32   #2
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
Радость

Код:
Pic.Canvas.CopyRect(Rect(0,0,1024,7 68),PicBuf.Canvas,rect(0+dx,0+dy,1024+dx,768+dy))
Где dx и dy это смещение.
Levsha100 вне форума Ответить с цитированием
Старый 12.06.2009, 22:04   #3
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Наверное чуть иначе :
Pic.Canvas.CopyRect(Rect(0,0,1024,7 68),PicBuf.Canvas,rect(dx,dy,1024,768))
1024,768- это размер области, а не вторые координаты. А dx и dy выбираем рандомно - dx := random(4095); dy := random(3071);
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 12.06.2009, 22:15   #4
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
Радость

Нет, ТС просил
Цитата:
часть картинки PicBuf размером 1024*768 (выбор координаты - рандом)
,
те правильно так
Код:
dx:=Random(4095-1024);
dy:=Random(3071-768);
Pic.Canvas.CopyRect(Rect(0,0,1024,768),PicBuf.Canvas,rect(0+dx,0+dy,1024+dx,768+dy))
Levsha100 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбиение на части MAcK Общие вопросы .NET 4 18.09.2008 13:56
Показ всех имен файлов в каталоге[Delphi] sergey31 Помощь студентам 2 27.07.2008 16:43
Чтение изображения из базы данных, Вместо изображения - "System.Byte[]" ruelCrow Общие вопросы .NET 3 10.07.2008 23:29
Показ картинок, как реализовать. Zeraim Мультимедиа в Delphi 18 21.05.2008 09:29
Выделение части изображения Luboff Помощь студентам 1 26.11.2007 08:07