读书人

高分请问DelphiX的有关问题

发布时间: 2012-02-22 19:36:55 作者: rapoo

高分请教DelphiX的问题
我用了DelphiX for D7控件。然后编译DelphiX2000_for_Delphi7\DelphiX2000\Samples\Graphic\AlphaBlending
里面的例子
界面上就三个组件:DDraw ,DDTime,DDImageList

代码如下:
unit Main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DXClass, ExtCtrls, DXDraws, StdCtrls;

type
TMainForm = class(TDXForm)
DXDraw: TDXDraw;
DXTimer: TDXTimer;
ImageList: TDXImageList;
procedure DXDrawInitialize(Sender: TObject);
procedure DXDrawFinalize(Sender: TObject);
procedure DXTimerTimer(Sender: TObject; LagCount: Integer);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
private
FAngle: Integer;
end;

var
MainForm: TMainForm;

implementation

{$R *.DFM}

procedure TMainForm.DXDrawInitialize(Sender: TObject);
begin
DXTimer.Enabled := True;
end;

procedure TMainForm.DXDrawFinalize(Sender: TObject);
begin
DXTimer.Enabled := False;
end;

procedure TMainForm.DXTimerTimer(Sender: TObject; LagCount: Integer);
begin
if not DXDraw.CanDraw then Exit;

DXDraw.Surface.Fill(0);

ImageList.Items[0].DrawWaveX(DXDraw.Surface, 50, 30, 320, 90, 0, 2, 80, FAngle*4);

ImageList.Items[0].DrawAdd(DXDraw.Surface, Bounds(80, 20, 128, 32),
0, Trunc(Cos256(FAngle)*126+127));

ImageList.Items[0].DrawAdd(DXDraw.Surface, Bounds(90, 30, 128, 32),
0, Trunc(Cos256(FAngle+128)*126+127));

ImageList.Items[0].DrawRotateAlpha(DXDraw.Surface, DXDraw.Surface.Width div 2,
DXDraw.Surface.Height div 2, 320, 90, 0, 0.5, 0.5, FAngle, Trunc(Cos256(FAngle)*126+127));



Inc(FAngle);

with DXDraw.Surface.Canvas do
begin
Brush.Style := bsClear;
Font.Color := clWhite;
Font.Size := 12;
Textout(0, 0, 'FPS: '+inttostr(DXTimer.FrameRate));

Release; { Indispensability }
end;

DXDraw.Flip;
end;

procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
{ Application end }
if Key=VK_ESCAPE then
Close;

{ Screen mode change }
if (ssAlt in Shift) and (Key=VK_RETURN) then
begin
DXDraw.Finalize;

if doFullScreen in DXDraw.Options then
begin
RestoreWindow;

DXDraw.Cursor := crDefault;
BorderStyle := bsSizeable;
DXDraw.Options := DXDraw.Options - [doFullScreen];
end else
begin
StoreWindow;

DXDraw.Cursor := crNone;
BorderStyle := bsNone;
DXDraw.Options := DXDraw.Options + [doFullScreen];
end;

DXDraw.Initialize;
end;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
ImageList.Items.MakeColorTable;
DXDraw.ColorTable := ImageList.Items.ColorTable;
DXDraw.DefColorTable := ImageList.Items.ColorTable;
DXDraw.UpdatePalette;
end;

end.

可惜一点反映也没有

建2个页面
我的本意是想在NO1页面上先导入一张背景图。
然后把这个页面交换到NO2。然后在NO2的页面上用Canvas画很多时间的刻度线条和一条长的时间线。这条时间能在鼠标的拖动下移动。
在交换到最前的页面上显示出来。
因为这些线条在在ComBox中的不同选择要画不同的时间刻度线。而对于总体的背景图我是不需要变换的

[解决办法]
路过看看
[解决办法]
只能帮顶一下

读书人网 >.NET

热点推荐