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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2012, 18:01   #1
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию TScrollBox и его невидимая область. Как с этим бороться? Смотрим внутри...

На форме лежит компонент TScrollBox, в нем TImage. Размеры ScrollBox 500х500, размеры Image 1500х1500.
В цикле выполняется следующее:
Код:
...
begin
  Image1.Canvas.Pen.Color:= $000009;  //граница маски
  Image1.Canvas.Brush.Color:= $000009;  //заливка маски
  Image1.Canvas.Polygon([Point(ig, ir + 30), Point(ig + 60, ir + 60), Point(ig + 120, ir + 30), Point(ig + 60, ir)]);  //рисуем маску (это просто ромб)
end;
...
Переменные ig, ir - меняют свои значения с каждым проходом цикла.

Дело в том, что рисование выполняется только в видимой области TImage. Почему? Ведь для этой цели я и положил внутрь ScrollBoxa Image. Я всегда так делал, все было нормально, а сейчас что-то не пойму в чем дело.

Ведь если выполнять рисование не в Image, а в ScrollBox, то как раз и получится, что рисунок будет только в видимой области.
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 17.02.2012, 18:18   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

может быть надо менять сам битмап картинки?
а не её канву(которая по сути канва родителя)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.02.2012, 18:20   #3
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
может быть надо менять сам битмап картинки?
а не её канву(которая по сути канва родителя)
Что вы имеете ввиду?
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 17.02.2012, 18:38   #4
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Все, вопрос решен. Я увеличил размеры:
Код:
...
  Image1.Height:= 5000;
  Image1.Width:= 5000;
...
Странно, вообще-то необходимые размеры у TImage задаются перед началом цикла. Все равно эти размеры (5000х5000) вернутся к необходимым (1500х1000). Зачем же указывать заведомо больше, чем мне необходимо?
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как программно изменить цвет "компонента"? Смотрим внутри... Vova777 Общие вопросы Delphi 3 15.02.2012 05:56
как бороться с табуляторами Fiesta200 Microsoft Office Word 11 08.10.2010 05:16
main.cpp:18: undefined reference to `_GetStockObject@4' Как с этим бороться? dvma04 Общие вопросы C/C++ 3 10.10.2009 21:26
С этим надо бороться... Карась О форуме и сайтах клуба 10 01.06.2008 11:10