各位大虾:
请问,在panel上怎样贴一张BMP图?
谢谢!
请问,在panel上怎样贴一张BMP图?
谢谢!
解决方案 »
- 在程序前边类定义那块按什么快捷键可以直接跳到过程那儿?
- 如何正确判断一个时间字符串啊?
- SQlServer数据库,C/S模式在客户端插入数据的问题
- 高分请教:我在delphi中用shell,但一编译的时候出错。说没有声明shell,我想请问怎样声明。应在uses中调用什么?
- 请问我这条插入语句有什么地方不对?
- 天太热了,请大家来喝点可乐,呵呵
- 请用delphi 7.0的朋友谈谈delphi6和delphi7的差别有多大!
- 无法记载sqlite数据库
- 哪位大侠指点一下在win2k如何下如何编写服务程序?请举个例子说明。可以加分。谢谢!
- 150台左右的局域网要求简单的数据传递(用S/C),后生真心求教,望先生不辞辛劳。
- 我想从QQ的user.db文件中读取QQ好友列表,如何做呢??急
- 关于mouse的hook问题
源码是
////////////////////////////////////////////////////////////////////////////////////
//
//
// FileName : ImagePanel.pas
// Creater : Shen Min
// Date : 2001-10-15
// Comment :
//
//
////////////////////////////////////////////////////////////////////////////////////
unit ImagePanel;interfaceuses windows, extctrls, graphics, classes, controls;type
TImagePanel = class(TCustomPanel)
private
FPicture : TPicture;
FTransparent : Boolean;
FAutoSize : Boolean; procedure PictureChanged(Sender: TObject);
procedure SetPicture(const Value: TPicture);
procedure SetAutoSize(const Value: Boolean); reintroduce;
procedure SetTransparent(const Value: Boolean);
procedure SetFont(const Value : TFont);
procedure SetCaption(const Value : TCaption);
procedure SetAlignment(const Value : TAlignment); protected
procedure Paint(); override; public
constructor Create(AOwner: TComponent); override;
destructor Destroy(); override; published
property Picture : TPicture read FPicture write SetPicture;
property Transparent : Boolean Read FTransparent Write SetTransparent default false;
property AutoSize : Boolean Read FAutoSize Write SetAutoSize; property Font write SetFont;
property Caption write SetCaption;
property Alignment write SetAlignment;
end;procedure Register;implementation{ TImagePanel }constructor TImagePanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner); FPicture := TPicture.Create();
FPicture.OnChange := PictureChanged; Repaint();
end;destructor TImagePanel.Destroy;
begin
FPicture.Free();
FPicture := nil; inherited;
end;procedure TImagePanel.Paint;
const
Alignments: array[TAlignment] of Longint = (DT_LEFT, DT_RIGHT, DT_CENTER);
var
Flags: Longint;
Rect: TRect;
FontHeight: Integer;
begin
Canvas.Brush.Style := bsClear;
Canvas.Font := Font; if Assigned(FPicture.Graphic) then
begin
if FAutoSize then
begin
Width := FPicture.Width;
Height := FPicture.Height;
end; if FPicture.Graphic.Transparent <> FTransparent then
FPicture.Graphic.Transparent := FTransparent;
Canvas.StretchDraw(ClientRect, FPicture.Graphic);
end
else
begin
Canvas.Brush.Color := Color;
Canvas.FillRect(ClientRect);
end; if Caption <> '' then
begin
Rect := GetClientRect;
FontHeight := Canvas.TextHeight('W');
Rect.Top := ((Rect.Bottom + Rect.Top) - FontHeight) div 2;
Rect.Bottom := Rect.Top + FontHeight; Flags := DT_EXPANDTABS or DT_VCENTER or Alignments[Alignment];
Flags := DrawTextBiDiModeFlags(Flags);
DrawText(Canvas.Handle, PChar(Caption), -1, Rect, Flags);
end;
end;procedure TImagePanel.PictureChanged(Sender: TObject);
begin
RePaint();
end;procedure TImagePanel.SetAlignment(const Value: TAlignment);
begin
inherited Alignment := Value; Repaint();
end;procedure TImagePanel.SetAutoSize(const Value: Boolean);
begin
FAutoSize := Value; RePaint();
end;procedure TImagePanel.SetCaption(const Value: TCaption);
begin
inherited Caption := Value; Repaint();
end;procedure TImagePanel.SetFont(const Value: TFont);
begin
inherited Font := Value; Repaint();
end;procedure TImagePanel.SetPicture(const Value: TPicture);
begin
FPicture.Assign(Value); Repaint();
end;procedure TImagePanel.SetTransparent(const Value: Boolean);
begin
FTransparent := Value; Repaint();
end;procedure Register;
begin
RegisterComponents('Sunisoft', [TImagePanel]);
end;end.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls;type
TTilePanel = class(TPanel)
private
FTile: TPicture;
procedure TileChanged(Sender: TObject);
procedure SetTile(Value: TPicture);
protected
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property Tile: TPicture read FTile write SetTile;
end;procedure Register;implementationconstructor TTilePanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner); FTile := TPicture.Create;
FTile.OnChange := TileChanged;
end;destructor TTilePanel.Destroy;
begin
FTile.Free; inherited Destroy;
end;procedure TTilePanel.TileChanged(Sender: TObject);
begin
Invalidate;
end;procedure TTilePanel.SetTile(Value: TPicture);
begin
FTile.Assign(Value);
end;procedure TTilePanel.Paint;
var
x, y: Integer;
begin
inherited Paint; if (FTile.Graphic <> nil) and (FTile.Width > 0) and (FTile.Height > 0) then
begin
y := 0;
while y < Height do
begin
x := 0;
while x < Width do
begin
Canvas.Draw(x, y, FTile.Graphic);
Inc (x, FTile.Width);
end;
Inc (y, FTile.Height);
end;
end;
end;procedure Register;
begin
RegisterComponents('Croco', [TTilePanel]);
end;end.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls;type
TTilePanel = class(TPanel)
private
FTile: TPicture;
procedure TileChanged(Sender: TObject);
procedure SetTile(Value: TPicture);
protected
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property Tile: TPicture read FTile write SetTile;
end;procedure Register;implementationconstructor TTilePanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner); FTile := TPicture.Create;
FTile.OnChange := TileChanged;
end;destructor TTilePanel.Destroy;
begin
FTile.Free; inherited Destroy;
end;procedure TTilePanel.TileChanged(Sender: TObject);
begin
Invalidate;
end;procedure TTilePanel.SetTile(Value: TPicture);
begin
FTile.Assign(Value);
end;procedure TTilePanel.Paint;
var
x, y: Integer;
begin
inherited Paint; if (FTile.Graphic <> nil) and (FTile.Width > 0) and (FTile.Height > 0) then
begin
y := 0;
while y < Height do
begin
x := 0;
while x < Width do
begin
Canvas.Draw(x, y, FTile.Graphic);
Inc (x, FTile.Width);
end;
Inc (y, FTile.Height);
end;
end;
end;procedure Register;
begin
RegisterComponents('Croco', [TTilePanel]);
end;end.
Canvas.Handle:=GetDC(Panel.Handle);Canvas就是对GDI的封装!有时候学学VC处理问题的方法,用起DELPHI来会更加得心应手!
rele***(dc)