BGRABitmap图像操作3:用鼠标在窗体画断续的曲线

翻译 2016年08月31日 15:03:21


    


代码:

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
  BGRABitmap, BGRABitmapTypes;

type

  { TForm1 }

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure FormPaint(Sender: TObject);
  private
    { private declarations }
    image: TBGRABitmap;
    procedure DrawBrush(X, Y: Integer);
    procedure PaintImage;

  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  image := TBGRABitmap.Create(640,480,BGRAWhite);  //create a 640x480 image
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then DrawBrush(X,Y);

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if ssLeft in Shift then DrawBrush(X,Y);

end;

procedure TForm1.FormPaint(Sender: TObject);
begin
  PaintImage;
end;

procedure TForm1.PaintImage;
begin
  image.Draw(Canvas,0,0,True);
end;

procedure TForm1.DrawBrush(X, Y: Integer);
const radius = 5;
begin
  image.GradientFill(X-radius,Y-radius, X+radius,Y+radius,
    BGRABlack,BGRAPixelTransparent, gtRadial,
    PointF(X,Y), PointF(X+radius,Y), dmDrawWithTransparency);

  PaintImage;
end;

end.


BGRABitmap图像操作3:用鼠标在窗体画连续的曲线

unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Gr...
  • bq_cui
  • bq_cui
  • 2016年08月31日 15:10
  • 206

opencv3 鼠标响应函数画矩形

注代码来自毛大神: //---------------------------------【头文件、命名空间包含部分】----------------------------- // 描述:包含...
  • yang332233
  • yang332233
  • 2016年04月25日 16:01
  • 969

在OpenCV中利用鼠标绘制直线

原文 鼠标绘制直线源代码: #include #include #include #pragma comment( lib, "cv.lib" ) #pragma comment( li...
  • u013432637
  • u013432637
  • 2014年01月11日 22:49
  • 645

Qt鼠标绘制平滑曲线解决方案(1)

Qt鼠标实时绘制平滑曲线 简单分析了鼠标绘制平滑曲线的一些问题
  • eiilpux17
  • eiilpux17
  • 2017年11月20日 19:17
  • 221

OpenGL: OpenGL下通过鼠标动态绘制三次Bezier曲线

三次Bezier曲线有四个控制节点。利用OpenGL的一维求值器原理。 程序介绍:第一次鼠标左键down点为0控制节点, 按住左键移动动态移动确定1控制节点,第二次鼠标左键down点3控制节点,按住左...
  • Augusdi
  • Augusdi
  • 2014年07月22日 17:20
  • 2364

Opencv用鼠标画圆

#include #include #define WINDOW_NAME "鼠标事件窗口" #define EVENT_WINDOW "滚动条窗口" #define PI 3.1415926 u...
  • qq_23880193
  • qq_23880193
  • 2015年08月25日 15:28
  • 883

canvas画图:用鼠标---画曲线,直线,矩形,圆

var canvas = document.getElementById('canvas'); // 得到画布 var ctx = canvas.getContext('2d'); // 得到画布的...
  • qq_31164127
  • qq_31164127
  • 2017年06月08日 17:28
  • 1898

gnuplot画3维间断图

gnuplot画3维图时用dgrid3d,默认是1范数,这样每个网格上的值要受所有数据点值的影响,即使是相距较远的点也会造成影响。这样画出的图的确比较光滑,但最近要画一个有间断的3维图,就很不爽了。后...
  • aabbcclrk
  • aabbcclrk
  • 2010年05月08日 15:53
  • 375

opencv学习笔记(十一)利用鼠标画出一个矩形

利用鼠标画出一个矩形。
  • u014751607
  • u014751607
  • 2016年12月29日 17:09
  • 776

MATLAB 绘制函数曲线图

转载地址:http://bbs.ednchina.com/BLOG_ARTICLE_2103818.HTM (1)y=1/x:  n=0:10:1000;  y=1./n;  plot(n,y...
  • Micro_Ryan
  • Micro_Ryan
  • 2016年03月06日 09:40
  • 2001
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BGRABitmap图像操作3:用鼠标在窗体画断续的曲线
举报原因:
原因补充:

(最多只允许输入30个字)