Изменить режим копирования изображенияDelphi , Графика и Игры , ГрафикаИзменить режим копирования изображенияАвтор: Xavier Pacheco { Copyright © 1999 by Delphi 5 Developer's Guide - Xavier Pacheco and Steve Teixeira } unit MainFrm; interface uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TMainForm = class(TForm) imgCopyTo: TImage; imgCopyFrom: TImage; cbCopyMode: TComboBox; btnDrawImages: TButton; btnCopy: TButton; procedure FormShow(Sender: TObject); procedure btnCopyClick(Sender: TObject); procedure btnDrawImagesClick(Sender: TObject); private procedure DrawImages; procedure GetCanvasRect(AImage: TImage; var ARect: TRect); end; var MainForm: TMainForm; implementation {$R *.DFM} procedure TMainForm.GetCanvasRect(AImage: TImage; var ARect: TRect); var R: TRect; R2: TRect; begin R := AImage.Canvas.ClipRect; with AImage do begin ARect.TopLeft := Point(0, 0); ARect.BottomRight := Point(Width, Height); end; R2 := ARect; ARect := R2; end; procedure TMainForm.DrawImages; var R: TRect; begin // Draw an ellipse in img1 with imgCopyTo.Canvas do begin Brush.Style := bsSolid; Brush.Color := clWhite; GetCanvasRect(imgCopyTo, R); FillRect(R); Brush.Color := clRed; Ellipse(10, 10, 100, 100); end; // Draw an ellipse in img2 with imgCopyFrom.Canvas do begin Brush.Style := bsSolid; Brush.Color := clWhite; GetCanvasRect(imgCopyFrom, R); FillRect(R); Brush.Color := clBlue; Ellipse(30, 30, 120, 120); end; end; procedure TMainForm.FormShow(Sender: TObject); begin // Initialize the combobox to the first item cbCopyMode.ItemIndex := 0; DrawImages; end; procedure TMainForm.btnCopyClick(Sender: TObject); var cm: Longint; CopyToRect, CopyFromRect: TRect; begin // Determine the copy mode based on the combo box selection case cbCopyMode.ItemIndex of 0: cm := cmBlackNess; 1: cm := cmDstInvert; 2: cm := cmMergeCopy; 3: cm := cmMergePaint; 4: cm := cmNotSrcCopy; 5: cm := cmNotSrcErase; 6: cm := cmPatCopy; 7: cm := cmPatInvert; 8: cm := cmPatPaint; 9: cm := cmSrcAnd; 10: cm := cmSrcCopy; 11: cm := cmSrcErase; 12: cm := cmSrcInvert; 13: cm := cmSrcPaint; 14: cm := cmWhiteness; else cm := cmSrcCopy; end; // Assign the selected copymode to Image1's CopyMode property. imgCopyTo.Canvas.CopyMode := cm; GetCanvasRect(imgCopyTo, CopyToRect); GetCanvasRect(imgCopyFrom, CopyFromRect); // Now copy Image2 onto Image1 using Image1's CopyMode setting imgCopyTo.Canvas.CopyRect(CopyToRect, imgCopyFrom.Canvas, CopyFromRect); end; procedure TMainForm.btnDrawImagesClick(Sender: TObject); begin DrawImages; end; end. Перевод на русский язык: Данный код является примером приложения Delphi, которое позволяет пользователю скопировать одну картинку на другую с помощью различных режимов копирования. Режим копирования определяет, как должна быть изменена целевая картинка в процессе копирования. Вот разбивка кода:
Доступные режимы копирования: 1. cmBlackness 2. cmDstInvert 3. cmMergeCopy 4. cmMergePaint 5. cmNotSrcCopy 6. cmNotSrcErase 7. cmPatCopy 8. cmPatInvert 9. cmPatPaint 10. cmSrcAnd 11. cmSrcCopy 12. cmSrcErase 13. cmSrcInvert 14. cmSrcPaint 15. cmWhiteness Чтобы изменить режим копирования, пользователь может просто выбрать другой элемент в комбо-боксе перед нажатием кнопки "Копировать". В улучшенной версии кода я добавил вызов Также я добавил строку кода на начало процедуры Изменение режима копирования изображения с помощью комбо-бокса и кнопки копирования в приложении на Delphi. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |