// пока просто рисуем что-нибудь:
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);
PaintBox - масштабирование
Подскажите, как задать "масштаб" для PaintBox? (например, для аналогичного действия на VB можно написать PictureBox.Scale(x1_custom,y1_custom) - (x2_custom, y2_custom))
Можно вручную, используя API:
координаты левого верхнего угла паинтбокса 0,0, нужно сменить их на -100, -100, к примеру
Цитата:
нужно сменить их на -100, -100, к примеру
Зачем? 0,0 - обычное начало координат для компонентов и не только.
Вот именно,что координаты 0,0 и начинаются в верхнем левом углу.Ему,как я понял,надо нарисовать график,соответственно,оси будут располагаться в центре,ну и измерять координаты он будет не в пикселях,а в своих логических координатах
Видимо,вы не работали в VB(а ТС про это писал,поэтому я его и понимаю:))–там есть очень удобное средство для этого
ТС могу только порекомендовать выполнять пересчёт вручную.С Delphi,увы,настолько не знаком…да он и сам об этом знает;)
Другого способа не знаю.
Цитата:
Обычно эту функцию объявляю как инлайн для экономии времени - не большая.
В Delphi нет inline-функций :(
Цитата: MaitreDesir
Оо Правда? (пруфлинк)
А, ну так это новые версии. Автор не указал, что у него за среда, да и я сам пишу на 7.
Цитата: MaitreDesir
Насчет таких вещей в paintbox - вроде никак не получится (хотя я могу просто не знать). Сам в таких задачах использую функцию приведения координат (передаем координату x, смещение начала нужной оси dx, коэффициент масштабирования s, возвращает x*s-dx). Обычно эту функцию объявляю как инлайн для экономии времени - не большая.
Другого способа не знаю.
Другого способа не знаю.
пришел к такому же решению.