zoukankan      html  css  js  c++  java
  • 颜色选取 权当给 supperment 的回复吧, 你的要求要用到"种子算法", 我暂时还没算明白.

    本例效果图:


    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Image1: TImage;
        procedure FormCreate(Sender: TObject);
        procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure Button1Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    const
      TargetColor: TColor = clRed;
    var
      SeedColor: TColor;
      x1,y1: Integer;
      pic: TPicture;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Image1.AutoSize := True;
      Image1.Picture.LoadFromFile('c:\temp\test.bmp');
      x1 := Image1.Left;
      y1 := Image1.Top;
      pic := Image1.Picture;
      Button1.Caption := '恢复';
    end;
    
    procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
      w,h: Integer;
      ImgHdc: HDC;
    begin
      ImgHdc := Image1.Canvas.Handle;
      SeedColor := GetPixel(ImgHdc, X,Y);
    
      for w := 0 to Image1.Width-1 do
      for h := 0 to Image1.Height-1 do
        if GetPixel(ImgHdc, w,h)=SeedColor then
          SetPixelV(Canvas.Handle, x1+w, y1+h, TargetColor);
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Image1.Picture := pic;
    end;
    
    end.
    
  • 相关阅读:
    CSS属性中Display与Visibility的不同
    11
    【零基础学习iOS开发】【01-前言】01-开篇
    C#计算时间差。
    C++拷贝构造函数:浅拷贝与深拷贝
    C++:string操作函数
    文件输入输出(二):文件的操作
    文件输入输出(一):重定向
    Java中的StringBuffer
    C++中setiosflags()的用法
  • 原文地址:https://www.cnblogs.com/del/p/1116587.html
Copyright © 2011-2022 走看看