谁有画基本图形的图库,(200分)

  • 主题发起人 主题发起人 hellotao
  • 开始时间 开始时间
H

hellotao

Unregistered / Unconfirmed
GUEST, unregistred user!
要求,
1。 有源代码
2。 可以改变大小和移动位置,
3。 包括一些基本图形rect, circle, 等
 
TCanvas 对象中都实现了啊!
 
但是不能改变大小和拖动啊,
我的要求是画出的图形会响应鼠标时间被拖动和改变大小
 
用TShape就可以了。
 
自己编程吧,不过vc到可以,你可以借鉴一下~~[8D]
 
那些效果是自己实现的!
 
4. 橡皮线功能
implementation

{$R *.DFM}
var
drawing:Boolean=false;
oPoint,sPoint:TPoint;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
spoint:=Point(x,y);
opoint:=sPoint;
drawing:=true;
Canvas.Brush.Style := bsclear;
Canvas.Pen.Style := psDot;
Canvas.Pen.Mode :=pmNotXor;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not(drawing) then exit;
canvas.Ellipse(spoint.x,spoint.y,opoint.x,opoint.y);
canvas.Ellipse(spoint.x,spoint.y,x,y);
oPoint:=point(x,y);
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if not(drawing) then exit;
canvas.Ellipse(spoint.x,spoint.y,opoint.x,opoint.y);
Canvas.Pen.Style := psSolid;
canvas.Ellipse(spoint.x,spoint.y,x,y);
Drawing:=false;

end;

end.
 
我自己搞定了,
2000行,可以画基本的uml类图,状态图等等,
 
那拿出来瞧瞧,贴个图什么的,
 
对呀,大家学习一下
 
刚才说的都不是什么图库,只能是一种画法。要想对图元进行移动、尺寸调整、对齐、以
任意角度旋转,必须要保存图元的结构,方法是建立每个图元的结构,图元之间如果有关系
需要建立拓扑结构。如直线类:
class CLine : public CBaseDraw
{
float m_startx;
float m_startY;
float m_endX;
float m_endY;
void Draw()
}

采用面向对象的继承、重载、多态、封装。可以很好的解决这类问题。
复杂的拓扑结构用图来表示,
class Graph
{
CVertex * m_vertex;
CEgde * m_edge
}
只要规划化好图元结构和拓扑结构,大部分图元操作和图元关联,以及和数据库连接都
能解决。
我用这种方法设计出了实现了很好的图形操作功能,能任意角度的旋转图元、对齐、调整大小。
有限取消、恢复操作。更高级的是具有拓扑功能,图元和图元之间保持很复杂的关联关系。
还和关系数据库相连接。图形重画方面,不出现很明显的抖动现象。

 
To:OneEyeWolf
有没有相关代码?我想参考参考。
 
代码再肯定有,但是不会公开的,这是个商业程序。不能公开,但是可以讨论技术。
 
多人接受答案了。
 
后退
顶部