Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

PaintBox - масштабирование

313
20 марта 2010 года
insane88
440 / / 13.12.2006
Подскажите, как задать "масштаб" для PaintBox? (например, для аналогичного действия на VB можно написать PictureBox.Scale(x1_custom,y1_custom) - (x2_custom, y2_custom))
253
20 марта 2010 года
Proger_XP
1.5K / / 07.08.2004
Можно вручную, используя API:
Код:
// пока просто рисуем что-нибудь:
  p.Canvas.Brush.Color := clred;
  p.Canvas.FillRect(rect(0,0,5,5));
  p.Canvas.Brush.Color := clyellow;
  p.Canvas.FillRect(rect(5,0,10,5));
  p.Canvas.Brush.Color := clgreen;
  p.Canvas.FillRect(rect(0,5,5,10));
  p.Canvas.Brush.Color := clblue;
  p.Canvas.FillRect(rect(5,5,10,10));
 
  // масштабируем:
  StretchBlt(p.Canvas.Handle, 20, 20, 100, 100, p.Canvas.Handle, 0, 0, 10, 10, srccopy);
313
20 марта 2010 года
insane88
440 / / 13.12.2006
не совсем в этом смысле
координаты левого верхнего угла паинтбокса 0,0, нужно сменить их на -100, -100, к примеру
253
20 марта 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата:
нужно сменить их на -100, -100, к примеру


Зачем? 0,0 - обычное начало координат для компонентов и не только.

7
20 марта 2010 года
@pixo $oft
3.4K / / 20.09.2006
Я понимаю,зачем ему это надо.Помочь не могу только:)
Вот именно,что координаты 0,0 и начинаются в верхнем левом углу.Ему,как я понял,надо нарисовать график,соответственно,оси будут располагаться в центре,ну и измерять координаты он будет не в пикселях,а в своих логических координатах

Видимо,вы не работали в VB(а ТС про это писал,поэтому я его и понимаю:))–там есть очень удобное средство для этого

ТС могу только порекомендовать выполнять пересчёт вручную.С Delphi,увы,настолько не знаком…да он и сам об этом знает;)
416
21 марта 2010 года
MaitreDesir
380 / / 02.01.2008
Насчет таких вещей в paintbox - вроде никак не получится (хотя я могу просто не знать). Сам в таких задачах использую функцию приведения координат (передаем координату x, смещение начала нужной оси dx, коэффициент масштабирования s, возвращает x*s-dx). Обычно эту функцию объявляю как инлайн для экономии времени - не большая.
Другого способа не знаю.
253
21 марта 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата:
Обычно эту функцию объявляю как инлайн для экономии времени - не большая.


В Delphi нет inline-функций :(

416
21 марта 2010 года
MaitreDesir
380 / / 02.01.2008
Цитата: Proger_XP
В Delphi нет inline-функций :(



Оо Правда? (пруфлинк)

253
21 марта 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата: MaitreDesir
Оо Правда? (пруфлинк)


А, ну так это новые версии. Автор не указал, что у него за среда, да и я сам пишу на 7.

313
23 марта 2010 года
insane88
440 / / 13.12.2006
Цитата: MaitreDesir
Насчет таких вещей в paintbox - вроде никак не получится (хотя я могу просто не знать). Сам в таких задачах использую функцию приведения координат (передаем координату x, смещение начала нужной оси dx, коэффициент масштабирования s, возвращает x*s-dx). Обычно эту функцию объявляю как инлайн для экономии времени - не большая.
Другого способа не знаю.


пришел к такому же решению.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог