DelphiX的控件开发问题? 让控件透明。(200分)

  • 主题发起人 主题发起人 蓝叶菱
  • 开始时间 开始时间

蓝叶菱

Unregistered / Unconfirmed
GUEST, unregistred user!
我在研究传奇的源程序,写控件。
我写了一个控件DELPHIX。
绘图的时候,怎么吧让控件显示我的Surface画面呢。
我制作完成之后。
TDCtrol=TCustomcontrol
我的效果是:
在窗体上放一个DxDraw(surface),然后在这个DxDraw上放你自己的控件,但是放上去以后,DxDraw被你这个控件挡住了,不能在你这个控件上面绘图?

传奇的效果:
我把这个控件放在了DXDraw上,
可是,控件本身有绘图,是一个方框。结果把我的DirectX的画面放在了控件画面的后面。
我开始明白了传奇,两外一个窗体a完全是画面的位置。
根据a位置在dxdraw上画surface,
响应事件完全依赖与坐标的计算和循环语句进行控件响应。
主窗体没有任何控件东西。




我想问:为什么不能像DELPHI一样拖曳控件到DXDRAW上,本身在这个控件上绘图,是不是你要开发基于DELPHIX/directx的控件就不能在TCustomcontrol下继承?(本身提供了鼠标键盘的响应)

怎么才能更理想的开发控件。那样的话是不是TDCtrol=class(TDirectsurface)这样写就可以了,进行开发,自己重新做事件和消息呢?
 
说实话,没有用过。
当初写KTV收银系统,前台状态显示想用它了,后来考虑DRECTX是全屏独占,就放弃了。
---
Delphi编程天地:18600851
 
也就是,
你的意思等于说,在窗体上放一个DxDraw(surface),然后在这个DxDraw上放你自己的控件,但是放上去以后,DxDraw被你这个控件挡住了,不能在你这个控件上面绘图?
或者:
怎么把DirectSurface画在开发的控件上。
 
鹧鸪菜 12:56:18
TCustomControl
玉米 12:56:35
那它可以你为什么就不可以?
玉米 12:57:10
好像有个DXInput控件专门负责响应输入事件?
鹧鸪菜 12:58:01
我知道,我不想使用它。
玉米 12:58:43
那就看它是怎么做的喽 
鹧鸪菜 12:59:30
一个不错的想法,我看看。
玉米 12:59:38
GDI和DX是两种不同的绘图方式,不大可能兼容吧
玉米 12:59:56
你拖普通的Button到DXSurface里,一个是GDI的,一个是DX的,你说会不会有问题?
鹧鸪菜 13:00:18
不会啊。
玉米 13:02:07
我怀疑DX下事件响应的方式可能会不同,不然为什么要有DXInput。没研究过。
DX有专门的一套轮循方法来检测输入事件
鹧鸪菜 13:02:09
不对,
DXDraw是,可是DirectSurface不是的吧。
玉米 13:02:32
DXDraw好像就是放了一个Surface吧
鹧鸪菜 13:07:08
它在paint事件是这样写的。
begin
Old := FNowOptions;
try
FNowOptions := FNowOptions - [doWaitVBlank];
Flip;
finally
FNowOptions := Old;
end;
if (Parent<>nil) and (Initialized) and (Surface.SurfaceDesc.ddscaps.dwCaps and DDSCAPS_VIDEOMEMORY<>0) then
Parent.Invalidate;
end;
玉米 13:07:08
我看到了你在大富翁上的帖子,不过还是看不明白你到底是什么意思。有几句话真的是读不通。
鹧鸪菜 13:07:20
那些话?
玉米 13:08:09
绘图的时候,怎么吧让控件显示我的Surface画面呢。

我开始明白了传奇,两外一个窗体完全是画面的位置。根据位置在dxdraw上画surface,响应事件完全依赖与坐标的计算和循环语句进行控件响应。

玉米 13:09:01
你的意思等于说,在窗体上放一个DxDraw(surface),然后在这个DxDraw上放你自己的控件,但是放上去以后,DxDraw被你这个控件挡住了,不能在你这个控件上面绘图?
鹧鸪菜 13:09:38
就是啊。
玉米 13:09:47
唉,要理解你说的话确实是比较累
玉米 13:10:12
那你怎么又说跟输入事件有关?
玉米 13:12:04
你刚才给我的OnPaint事件是哪个东西的?
鹧鸪菜 13:12:54
我是说刚才的Paint事件,是delphix控件dxdraw的paint处理情况。

鹧鸪菜 13:13:45
我并没有写。
if csDesigning in componentState then
with Canvas do
begin
Pen.Color:=clBlack;
Rectangle(0,0,Width,Height);
TextOut((Width - TextWidth(Caption)) div 2,(Height-TextHeight(Caption)) div 2,Caption);
end;
运行的我根本没有写任何东西。
玉米 13:14:56
看不大懂。doWaitVBlank不知道什么意思。
后面那个if的意思可能是让它所在的那个Form(GDI)失效,换成DxSurface
鹧鸪菜 13:15:19
你可以看看效果。
我设置WDControl的visiable=True;的效果出,而且响应事件。

鹧鸪菜 13:16:42

鹧鸪菜 13:17:04
设置WDControl.visiable=False 效果
玉米 13:17:19
WDControl是什么东西?
鹧鸪菜 13:17:28

鹧鸪菜 13:17:37
我做的控件。
玉米 13:17:56
你的意思等于说字写不上去?
玉米 13:18:34
哦,知道了,你本来想让visible=false的时候,中间那个灰色不要出现?
鹧鸪菜 13:18:40
这样可以看出上面的效果被挡住了,
玉米 13:18:49

鹧鸪菜 13:19:10
也就是所,图像的SURFACE没有画到控件上。
玉米 13:20:15
等于说,不能“透明”?
鹧鸪菜 13:20:54
可以这样说。
玉米 13:23:29
基于TCustomControl的?
 
crazyman2006, 并非全屏,你还是不大理解DIRECTX
 
http://www.ibook8.com/Sorting/Catalog46/Sorting_Indate_Desc_1.html
 
1。DELPHI版本的 WIN 32 API(30)好像是HLP文件,或者CHM文件。
=====================================
100分,
2。今天听说D2006相当不错了,但是我如果开发.NET程序使用什么呢?
1)是使用VS2003还是VS2005开发.net/Web程序呢.
2)还是选择,Delphi2005/2006呢,
如果使用DELPHI2006.我是使用C#还是DELPHI语言呢。不知道有没的买。
 
WIN 32API的文件我有. win32api.chm 650K
联系方式:QQ;6042506

我觉得要开始.NET/WEB程序的话,最好用VS2005吧.
必竟人家MS是老大.
 
继续讨论。。。
VS和D2006,我该使用什么工具,
我使用什么语言呢,,是DELPHI还是C#做网站。
 
WIN 32API的文件我有. win32api.chm 650K
delphi版的。
 
使用VS2005开发.net/Web程序
如果使用DELPHI2006.使用DELPHI语言。
 
当然是用vs2005了
 
你觉得哪个比较上手, 就用哪个吧. 如果你是fan for Delphi, 可以使用Delphi2006.
 
如果用C#的话,现在一般都选择VS2003,因为VS2005运行要求比较高,一般公司都要考虑成本,虽然界面漂亮和效率提高了。
 
Delphi2006起动太慢,而且经常会出错,用的很不爽,
虽然我现在好多程序都是用delphi开发的,但是建议.net用vs2005的C#开发
 
2006必须打补丁的,各位如果使用DELPHI2005得C#如何?
 
D05速度好像挺慢的
VS2005不错 就是大了点
 
开发.net,强烈建议VS类工具,毕竟这个是源?
 
后退
顶部