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

翻译 2016年08月31日 15:10:56


    


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 FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormPaint(Sender: TObject);
  private
    { private declarations }
    image: TBGRABitmap;
    mouseDrawing: boolean;
    mouseOrigin: TPoint;

    procedure DrawBrush(X, Y: Integer; Closed: Boolean);
    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
  begin
    mouseDrawing := True;
    mouseOrigin := Point(X,Y);
    DrawBrush(X,Y,True);        //   or   DrawBrush(X,Y);
  end;


end;

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


end;

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

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; Closed: Boolean);
const brushRadius = 20;
begin
  image.DrawLineAntialias(X,Y,mouseOrigin.X,mouseOrigin.Y,BGRA(0,0,0,128),brushRadius,Closed);
  mouseOrigin := Point(X,Y);

  PaintImage;
end;


end.


opencv3 鼠标响应函数画矩形

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

Python绘制二维曲线的日常应用

使用Python绘制出类似Excel或者MATLAB的曲线还是比较容易就能够实现的,需要用到的额外库有两个,numpy和matplotlib。使用这两个模块实现的曲线绘制其实在一定程度上更像是MATL...
  • grey_csdn
  • grey_csdn
  • 2017年01月15日 17:48
  • 906

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

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

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

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

鼠标操作贝塞尔曲线

贝塞尔曲线贝塞尔曲线,是一种在计算机图形学中相当重要的参数曲线. 贝塞尔曲线由法国工程师皮埃尔·贝塞尔于1962年发表,他运用贝塞尔曲线来为汽车的主体进行设计....
  • conmajia
  • conmajia
  • 2015年02月22日 14:57
  • 3513

spyder绘制loss曲线

caffe的python接口学习(7):绘制loss和accuracy曲线 转自:http://www.cnblogs.com/denny402/p/5686067.html 使用python...
  • langxing1992
  • langxing1992
  • 2017年05月26日 10:30
  • 281

BGRABitmap图像操作13:BGRABitmap的坐标系统

标准的画布采用整数坐标系统。CanvasBGRA 也是,不过反锯齿模式、alpha通道(透明)、gamma 纠正模式则不是。...
  • bq_cui
  • bq_cui
  • 2016年10月06日 16:49
  • 259

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

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

Qt之鼠标随手画及画多边形

主要是用Qt实现2D涂鸦及话多边形的功能,我的版本是Qt5.3。
  • u010906483
  • u010906483
  • 2016年03月12日 14:17
  • 3095

Matlab曲线绘制详解

Matlab画图详解  连续曲线-plot  plot()函数是一个非常常见的画图函数,一般用来画连续的曲线。具体用法如下:   plot(y):y为纵坐标的值(一个1*n矩阵),y的index作为...
  • ahafg
  • ahafg
  • 2016年04月04日 16:33
  • 3933
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BGRABitmap图像操作3:用鼠标在窗体画连续的曲线
举报原因:
原因补充:

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