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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.11.2010, 18:02
rubius2008 rubius2008 вне форума
Прохожий
 
Регистрация: 05.11.2009
Сообщения: 7
Репутация: 10
По умолчанию Рисование c масштабированием в Delphi

Задание: Нужно сделать на форме область для рисования (половина формы) и на ней чтоб отобразились прямоугольник, круг и текст (параметры этих фигур и сам текст нужно чтоб задавались на форме). И чтобы при изменении размеров окна картинка также менялась, автомасштабировалась. и К тому же надо чтоб при изменении размера окна меньше 640х480 окно не уменьшалось.

Использую canvas чтоб нарисовать прямоугольник (область для рисования), а потом уже в нем собственно рисую фигуры. Сделал перерисовку области рисования при изменении размера окна (тупо закрашиваю все окно а потом заново рисую все объекты), но только до размера 640х480. При уменьшении указанного размера область прямоугольника обрезается, и не появляется скролинг.

Подскажите в каком направление мне двигаться хотяб, чтоб решить эту задачу. А то в понед. надо уже преподу показать. Или какие вообще это сделать?
Ответить с цитированием
  #2  
Старый 23.11.2010, 17:15
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Цитата:
К тому же надо чтоб при изменении размера окна меньше 640х480 окно не уменьшалось
Если речь идет об окне главной формы приложения (на Canvas которой и будет производиться "рисование"), то можно использовать свойство формы Constraints (MinWidth и MinHeight).
Но тогда вот это:
Цитата:
При уменьшении указанного размера ... и не появляется скролинг
уже не актуально.

А если Вы автомасштабируете картинку "до половины формы", то вот этого
Цитата:
...область прямоугольника обрезается...
тоже не должно быть по идее.

А Вы не могли бы, если не трудно, показать код (где перерисовка).
Может там надо просто что-то вроде Invalidate сделать.
Ответить с цитированием
  #3  
Старый 28.11.2010, 21:09
rubius2008 rubius2008 вне форума
Прохожий
 
Регистрация: 05.11.2009
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от roamer
А Вы не могли бы, если не трудно, показать код (где перерисовка).
Может там надо просто что-то вроде Invalidate сделать.
На ресайзинг формы написал следующий код
Код:
 
 if  ClientWidth<640 then Fill2DrawX1:=640 else Fill2DrawX1:=ClientWidth;
 if  ClientHeight<480 then Fill2DrawY1:=480 else Fill2DrawY1:=ClientHeight;

 Fill2DrawX2:=Fill2DrawX1;        Fill2DrawY2:=Fill2DrawY1;
 Fill2DrawX1:=Fill2DrawX1 div 2; Fill2DrawY1:=20;

 //Очищается форма
 Canvas.Pen.Color:=Color;
 Canvas.Brush.Color:=Color;
 Canvas.Rectangle(0,0,ClientWidth,ClientHeight);


 //Рисуется прямоугольник - область рисования
 Canvas.Pen.Color:=clBlack;
 Canvas.Brush.Color:=clWhite;
 Canvas.Rectangle(Fill2DrawX1,Fill2DrawY1,Fill2DrawX2,Fill2DrawY2);

Может это не правильный вариант - закрашивать прямоугольником форму?
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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