好奇怪,编译并安装后,托到FORM上,为什么显示一片空白 ?该组件主要功能是,用WIN函数画线,并把最终画出来线组合成一个座标图,
直接把这个图放在窗口上..
高人帮看看!
谢了
unit MyDraw1;interfaceuses Classes, Controls, Messages, Windows, Forms, Graphics, StdCtrls,
Grids, SysUtils,DateUtils;type
TMyDraw1 = class(TGraphicControl)
private
{ Private declarations }
protected
{ Protected declarations }
public
mydc:HDC; //定义要设置座标的对象
Procedure DrawRec(MyDC:HDC;LocX,LocY,W,H:Integer);
Procedure DrawLine(MyDC:HDC;X1,Y1,X2,Y2:Integer);
Procedure DrawZero;
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('ActiveX', [TMyDraw1]);
end;{ TMyDraw1 }Procedure TMyDraw1.DrawRec(MyDC:HDC;LocX,LocY,W,H:Integer);
var
HalfW,HalfH:Integer;
begin
Windows.SelectObject(mydc,CreatePen(PS_SOLID,0,clYellow));
HalfW:= W div 2;
HalfH:= H div 2;
windows.Rectangle(MyDC,LocX-HalfW,LocY-HalfH,LocX+HalfW,LocY+HalfH);
end;Procedure TMyDraw1.DrawLine(MyDC:HDC;X1,Y1,X2,Y2:Integer);
begin
//CreatePen( int nPenStyle, int nWidth, COLORREF crColor );
Windows.SelectObject(mydc,CreatePen(PS_SOLID,0,clYellow));
windows.MoveToEx(mydc,x1,y1,nil);
windows.LineTo(mydc,x2,y2);
end;
procedure TMyDraw1.DrawZero;
begin
//设置空心
Windows.SelectObject(mydc,GetStockObject(NULL_BRUSH));
SetTextColor(mydc,clRed); //文本颜色
setbkmode(mydc,transparent);//文本透明 //画座标
DrawRec(mydc,0,0,5,5);
DrawLine(mydc,0,0,50,0);
DrawLine(mydc,0,0,0,50);
//三角形X
DrawLine(mydc,50,2,50,-2);
DrawLine(mydc,50,-2,55,0);
DrawLine(mydc,55,0,50,2);
//三角形Y
DrawLine(mydc,-2,50,2,50);
DrawLine(mydc,2,50,0,55);
DrawLine(mydc,0,55,-2,50); Windows.TextOut(mydc,25,8,'X',1);
Windows.TextOut(mydc,1,25,'Y',1);
end;constructor TMyDraw1.Create(AOwner: TComponent);
begin
inherited;
//mydc:=GetDC(self.Parent.Handle);
DrawZero;
end;
直接把这个图放在窗口上..
高人帮看看!
谢了
unit MyDraw1;interfaceuses Classes, Controls, Messages, Windows, Forms, Graphics, StdCtrls,
Grids, SysUtils,DateUtils;type
TMyDraw1 = class(TGraphicControl)
private
{ Private declarations }
protected
{ Protected declarations }
public
mydc:HDC; //定义要设置座标的对象
Procedure DrawRec(MyDC:HDC;LocX,LocY,W,H:Integer);
Procedure DrawLine(MyDC:HDC;X1,Y1,X2,Y2:Integer);
Procedure DrawZero;
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('ActiveX', [TMyDraw1]);
end;{ TMyDraw1 }Procedure TMyDraw1.DrawRec(MyDC:HDC;LocX,LocY,W,H:Integer);
var
HalfW,HalfH:Integer;
begin
Windows.SelectObject(mydc,CreatePen(PS_SOLID,0,clYellow));
HalfW:= W div 2;
HalfH:= H div 2;
windows.Rectangle(MyDC,LocX-HalfW,LocY-HalfH,LocX+HalfW,LocY+HalfH);
end;Procedure TMyDraw1.DrawLine(MyDC:HDC;X1,Y1,X2,Y2:Integer);
begin
//CreatePen( int nPenStyle, int nWidth, COLORREF crColor );
Windows.SelectObject(mydc,CreatePen(PS_SOLID,0,clYellow));
windows.MoveToEx(mydc,x1,y1,nil);
windows.LineTo(mydc,x2,y2);
end;
procedure TMyDraw1.DrawZero;
begin
//设置空心
Windows.SelectObject(mydc,GetStockObject(NULL_BRUSH));
SetTextColor(mydc,clRed); //文本颜色
setbkmode(mydc,transparent);//文本透明 //画座标
DrawRec(mydc,0,0,5,5);
DrawLine(mydc,0,0,50,0);
DrawLine(mydc,0,0,0,50);
//三角形X
DrawLine(mydc,50,2,50,-2);
DrawLine(mydc,50,-2,55,0);
DrawLine(mydc,55,0,50,2);
//三角形Y
DrawLine(mydc,-2,50,2,50);
DrawLine(mydc,2,50,0,55);
DrawLine(mydc,0,55,-2,50); Windows.TextOut(mydc,25,8,'X',1);
Windows.TextOut(mydc,1,25,'Y',1);
end;constructor TMyDraw1.Create(AOwner: TComponent);
begin
inherited;
//mydc:=GetDC(self.Parent.Handle);
DrawZero;
end;
解决方案 »
- ADOQuery研究,Close后Open,数据库不是一直处于连接状态吗?
- 怎样通过一个指针,把这个指针所指向的内存存为一个array of byte?
- 大家来帮我看看这个程序错再哪了(简单程序)?
- 关于.dfm文件中的中文字符问题
- 奇怪!我的DELPHI里面没有RAVE这个组件,现在用什么办法把它装上去?
- 如何实现 画曲线曲面如贝塞尔曲线?
- 急救:谁解决了flash控件全屏(或动态改变大小)时,控件不变的问题?
- 软件做完了,怎么作成安装程序,要注意什么?
- 控件编写遇到的问题
- delphi 调用form.refresh时只想刷新部分区域,我该如何办呢?
- 200分求解决问题,进来看地址,2个题全给分,解决完立即结贴~~~~~~~~~~~~~~``~~~~~~~~~`~~~~~~~~~~~~~~``
- 关于CMD接收命令问题,高手进
在哪个位置加repaint?
procedure TImage.Paint;
var
Save: Boolean;
begin
if csDesigning in ComponentState then
with inherited Canvas do
begin
Pen.Style := psDash;
Brush.Style := bsClear;
Rectangle(0, 0, Width, Height);
end;
Save := FDrawing;
FDrawing := True;
try
with inherited Canvas do
StretchDraw(DestRect, Picture.Graphic);
finally
FDrawing := Save;
end;
end;