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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 25.03.2008, 19:39
Adler Adler вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 34
Репутация: 10
Счастье

Smirnov Ivan
Цитата:
Ты думаешь, ты самый умный?
Да думай что хочешь мне пофиг.
Цитата:
почему сам не поможешь?
- просто так помогать, это не комне. Всё равно всем не поможешь. Лучшее учение - это самообучение.
ЗЫ: Воть аргумент, а то так и будете думать...
Вложения
Тип файла: 7z For Noob.7z (20.6 Кбайт, 19 просмотров)
Ответить с цитированием
  #17  
Старый 25.03.2008, 21:24
Гудвин Гудвин вне форума
Прохожий
 
Регистрация: 18.03.2008
Сообщения: 24
Репутация: 10
Смех

йа_модуль.пас *rofl*
Ответить с цитированием
  #18  
Старый 26.03.2008, 21:58
Adler Adler вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 34
Репутация: 10
По умолчанию

Гудвин
Цитата:
йа_модуль.пас
Ja_Modul.pas Copyright by JaPas_Software.
Ответить с цитированием
  #19  
Старый 27.03.2008, 17:36
Adler Adler вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 34
Репутация: 10
По умолчанию

Вот, а потом ещё кто-то говарит -
Цитата:
почему сам не поможешь?
. Ну, и нафиг вам помогать, неблагодарным. Уйду я от вас.
Ответить с цитированием
  #20  
Старый 28.03.2008, 19:31
Brute Force Brute Force вне форума
Прохожий
 
Регистрация: 21.03.2008
Сообщения: 15
Репутация: 10
По умолчанию

Нет, спасибо, конечно за пример, просто не разобрались еще, больно много математики. Пока обнаружил только, что если поменять в формуле для переменной Scale синус на косинус, то результат не изменится. И еще с отрисовкой беда, при уменьшении изображения поля не очищаются и там остатки предыдущих размеров видны.
Ответить с цитированием
  #21  
Старый 28.03.2008, 19:52
Brute Force Brute Force вне форума
Прохожий
 
Регистрация: 21.03.2008
Сообщения: 15
Репутация: 10
По умолчанию

И еще, нельзя ли как-то ограничить область, в которой отрисовка происходит, а то если масштаб увеличивать, то картинка во всю форму рисуется и под остальные компоненты залазит. Я пытался TImage в ScrollBox поместить, но у него канвы нету (
А мне надо, чтобы TImage был ограниченных и фиксированных размеров, а уменьшалась и увеличивалась в нем сама картинка.
Ответить с цитированием
  #22  
Старый 28.03.2008, 22:19
Adler Adler вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 34
Репутация: 10
По умолчанию

Brute Force
"больно много математики" - кхм... о_О хде?
Ответить с цитированием
  #23  
Старый 17.04.2008, 15:50
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Brute Force
И еще, нельзя ли как-то ограничить область, в которой отрисовка происходит, а то если масштаб увеличивать, то картинка во всю форму рисуется и под остальные компоненты залазит. Я пытался TImage в ScrollBox поместить, но у него канвы нету (
А мне надо, чтобы TImage был ограниченных и фиксированных размеров, а уменьшалась и увеличивалась в нем сама картинка.

тогда тебе разбираться с TPaintBox (кажется так). У него есть эвент - OnPaint - вызывается при перерисовке самого контрола.
1. Создаешь в памяти битмар (FBitmap : TBitmap) оригинального размера (т.е. просто загрузка из файла).
2. На форму кидаешь TScrollBox и настраиваешь его размеры (это если надо даже в случае, когда картинка больше видимой области, иметь возможность прокрутить ее и увидеть любую часть).
3. На TScrollBox кидаешь TPaintBox.
4. Заводишь переменную - коэф. увеличения. Тип - в зависимости от потребностей. Если нужно только увеличение, то можно обойтись Integer, если надо и уменьшение, то тип Double. В примере - первый вариант (FScale : Integer).
4. В событии OnPaint пишешь код отрисовки вида:
Код:
// Вариант без TScrollBox
var
  ViewH, ViewH : Intger;
  R : TRect;
begin
  // вычисляем размеры отображения. Если FScale : Double, то закрыть в Round
  ViewH := FBitmap.Height * FScale;
  ViewW := FBitmap/Width * FScale;

  // Вычисляем координаты области отрисовки
  R := TRect(Round((PaintBox.Width - ViewW)/2), // Left
                  Round((PaintBox.Height - ViewH)/2), // Top
                  Round((PaintBox.Width - ViewW)/2) + ViewW, // Right
                  Round((PaintBox.Height - ViewH)/2) + ViewH); // Bottom

  // Рисуем
  PaintBox.Canvas.StretchDraw(R,FBitmap);
end;

Вариант с TScrollBox по сути гораздо проще.
При изменении масштаба надо просто установить размеры TPaintBox в вычисленные аналогично предыдущему варианту, а в отрисовке R создать по координатам PaintBox'а (R := Rect(0,0,PaintBox.Width,PaintBox.Height) и отрисовать FBitmap (точно также, как и выше).
Ответить с цитированием
  #24  
Старый 18.04.2008, 21:59
Edelvace Edelvace вне форума
Прохожий
 
Регистрация: 18.04.2008
Сообщения: 3
Репутация: 10
По умолчанию Перетаскивание картинки внутри TImage

Люди, привет вам!
подскажите плиз код!
есть Timage (100*100)
в нем есть картинка, скажем 500*500
над, чтоб я нажал лев. кнопку мыши на картинке и мог перетаскивать картинуку внктри Timage, при этом, разумеется, надо чтоб Timage оставался нетронутым!
Если кто помнит ФотоШоп, то там есть такой инструмент "Рука" (Pan).
вот надо чтоб такое работало и у меня!
Через функцию BitBLT пробовал, получилось! мне кажется есть намного проще способ, нежели один Timage все время копить и вставлять в другой Timage !

Кто может, подскажите плз! отдельный респект тому
Ответить с цитированием
  #25  
Старый 19.04.2008, 02:54
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ответил здесь: http://www.delphisources.ru/forum/sh...astpost&t=3144
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter