Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Масштабирование для Canvas

Delphi , Графика и Игры , Canvas

Масштабирование для Canvas

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

procedure SetCanvasZoomFactor(Canvas: TCanvas; AZoomFactor: Integer);
 var
   i: Integer;
 begin
   if AZoomFactor = 100 then
     SetMapMode(Canvas.Handle, MM_TEXT)
   else
   begin
     SetMapMode(Canvas.Handle, MM_ISOTROPIC);
     SetWindowExtEx(Canvas.Handle, AZoomFactor, AZoomFactor, nil);
     SetViewportExtEx(Canvas.Handle, 100, 100, nil);
   end;
 end;


 procedure TForm1.Button1Click(Sender: TObject);
 var
   bitmap: TBitmap;
 begin
   bitmap := TBitmap.Create;
   try
     bitmap.Assign(Form1.image1.Picture.Bitmap);
     SetCanvasZoomFactor(bitmap.Canvas, 70);
     Canvas.Draw(30, 30, bitmap);
   finally
     bitmap.Free
   end;
 end;

Код предназначен для масштабирования канваса в Delphi для использования с компонентами TBitmap и TForm. Процедура SetCanvasZoomFactor принимает два параметра: канвас для масштабирования и коэффициент масштабирования, который является целочисленным значением.

Процедура проверяет, равен ли коэффициент масштабирования 100. Если это так, она устанавливает режим карты канваса в MM_TEXT. В противном случае она устанавливает режим карты в MM_ISOTROPIC и затем использует функции SetWindowExtEx и SetViewportExtEx для установки размера окна и области просмотра канваса.

Вторая процедура, Button1Click, вызывается при клике кнопки на форме. Она создает новый объект TBitmap, присваивает ему битмап из компонента изображения (Form1.image1.Picture.Bitmap), масштабирует канвас с помощью процедуры SetCanvasZoomFactor с коэффициентом масштабирования 70 и затем рисует масштабированный битмап на канвасе.

Схема работы кода следующая:

  1. Проверяется, равен ли коэффициент масштабирования 100. Если это так, устанавливается режим карты в MM_TEXT.
  2. Если коэффициент масштабирования не равен 100, устанавливается режим карты в MM_ISOTROPIC и затем используются функции SetWindowExtEx и SetViewportExtEx для установки размера окна и области просмотра канваса.
  3. Создается новый объект TBitmap и присваивается ему битмап из компонента изображения (Form1.image1.Picture.Bitmap).
  4. Масштабируется канвас с помощью процедуры SetCanvasZoomFactor с коэффициентом масштабирования 70.
  5. Масштабированный битмап рисуется на канвасе.

Пример использования кода:

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetCanvasZoomFactor(bitmap.Canvas, 70); // масштабирует канвас до 70%
  Canvas.Draw(30, 30, bitmap); // рисует масштабированный битмап на канвасе
end;

В этом примере при клике кнопки на форме будет масштабироваться канвас до 70% и затем рисоваться масштабированный битмап на канвасе координатами (30, 30).

Пример кода на Delphi, демонстрирующий масштабирование графики на canvas с помощью функции SetCanvasZoomFactor.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Canvas ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:10:53/0.0036940574645996/0