我在PaintBox上画了很多圆
后来由于项目需要又要增加一个画线条的功能
线条需要很粗
但是发现调整了pen的width属性后
以前画的圆的边框宽度也跟着增加了
所以决定用矩形框代替线条
已知2点坐标 画一个矩形 宽度为6 长度为2点之间距离
2点恰好位于矩形的2个短边中间
如何得到画矩形的2个坐标的参数?也就是左上和右下点的坐标
后来由于项目需要又要增加一个画线条的功能
线条需要很粗
但是发现调整了pen的width属性后
以前画的圆的边框宽度也跟着增加了
所以决定用矩形框代替线条
已知2点坐标 画一个矩形 宽度为6 长度为2点之间距离
2点恰好位于矩形的2个短边中间
如何得到画矩形的2个坐标的参数?也就是左上和右下点的坐标
解决方案 »
- 关于delphi 函数(过程)中的 overload;
- delphi 开发的ActiveX导致IE致死……
- 怎样截取以空格为间隔的字符串 如'ab cd' 不要用pos
- 安装cxGird时,提示:[DCC Error] E1026 File not found: 'xLibraryRe.RES'
- --- >高分求解超难问题!!关于窗口显示!!
- 高分求救,如何实现对系统用户,以及域用户的监控
- 2000/xp/98 下如何隐式“建立网络连接”
- 超难查询语句,,,这样的记录查询如何写查询语句/.....
- 请问怎么调节显示屏的亮度和对比度?
- 用ADO连接Oracle问题(TADOTable)
- 如何正确在剪贴板存入自定义格式的内容﹖
- 怎样给fastreport脚本的变量赋值?
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
FOpt,
FCpt: TPoint;
procedure DrawRectangle(AOpt, ACpt: TPoint);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.DrawRectangle(AOpt, ACpt: TPoint);
begin
With Canvas do
begin
//左垂
MoveTo(AOpt.X, AOpt.Y);
LineTo(AOpt.X, ACpt.Y);
//右垂
MoveTo(ACpt.X, AOpt.Y);
LineTo(ACpt.X, ACpt.Y);
//上水
MoveTo(AOpt.X, AOpt.Y);
LineTo(ACpt.X, AOpt.Y);
MoveTo(AOpt.X, ACpt.Y);
LineTo(ACpt.X, ACpt.Y);
end;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
With Canvas do
begin
if Shift = [ssleft] then
begin
Canvas.Pen.Mode := pmNot;
Canvas.Pen.Color := clRed;
FOpt := Point(X, Y);
FCpt := Point(X, Y);
MoveTo(X, Y);
LineTo(X, Y)
end;
end;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
With Canvas do
begin
if Shift = [ssleft] then
begin
DrawRectangle(FOpt, FCpt);
FCpt := Point(X, Y);
DrawRectangle(FOpt, FCpt);
exit;
MoveTo(FOpt.X, FOpt.Y);
LineTo(FCpt.X, FCpt.Y);
FCpt := Point(X, Y);
MoveTo(FOpt.X, FOpt.Y);
LineTo(FCpt.X, FCpt.Y)
end;
end;
end;
end. 参考一下
pen.width:=默认
pen.width:=12;
//画矩形
pen.width:=默认