zoukankan      html  css  js  c++  java
  • WinAPI: OffsetWindowOrgEx 移动窗口坐标原点

    相关函数: OffsetViewportOrgEx

    本例效果图:



    代码文件:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls, ExtCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure FormPaint(Sender: TObject);
        procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
        procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    var
      cvs: TCanvas;
      bit: TBitmap;
      f: Boolean;
      x1,y1: Integer;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      bit := TBitmap.Create;
      bit.LoadFromFile('c:\temp\test.bmp');
      cvs := TCanvas.Create;
      cvs.Handle := GetDC(Handle);
    end;
    
    procedure TForm1.FormPaint(Sender: TObject);
    const
      str = 'Delphi';
    var
      x,y: Integer;
    begin
      {在图片中绘制文本}
      bit.Canvas.Font.Size := 24;
      bit.Canvas.Font.Style := [fsBold];
      bit.Canvas.Font.Color := 0;
      bit.Canvas.Brush.Style := bsClear;
      x := (bit.Width - bit.Canvas.TextWidth(str)) div 2;
      y := (bit.Height - bit.Canvas.TextHeight(str)) div 2 + 32;
      bit.Canvas.TextOut(x, y, str);
    
      {在窗体上绘制图片}
      x := (ClientWidth - bit.Width) div 2;
      y := (ClientHeight - bit.Height) div 2;
      cvs.Draw(x, y, bit);
    end;
    
    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      f := True;
      x1 := X;
      y1 := Y;
    end;
    
    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      if f then
      begin
        OffsetWindowOrgEx(cvs.Handle, -(X-x1), -(Y-y1), nil);
        x1 := X;
        y1 := Y;
        Repaint;
      end;
    end;
    
    procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      f := False;
    end;
    
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      bit.Free;
      cvs.Free;
    end;
    
    end.
    
    窗体文件:
    object Form1: TForm1
      Left = 212
      Top = 116
      Caption = 'Form1'
      ClientHeight = 204
      ClientWidth = 262
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'Tahoma'
      Font.Style = []
      OldCreateOrder = False
      Position = poDesigned
      OnCreate = FormCreate
      OnDestroy = FormDestroy
      OnMouseDown = FormMouseDown
      OnMouseMove = FormMouseMove
      OnMouseUp = FormMouseUp
      OnPaint = FormPaint
      PixelsPerInch = 96
      TextHeight = 13
      object Button1: TButton
        Left = 96
        Top = 171
        Width = 75
        Height = 25
        Caption = 'Button1'
        TabOrder = 0
      end
    end
    
  • 相关阅读:
    Ubuntu 12.10 安装 jdk-7u10-linux-x64.tar.gz(转载)
    Android-- FragmentStatePagerAdapter分页(转载)
    Windows下安装Cygwin及包管理器apt-cyg(转)
    Androidi性能优化之多线程和同步
    Androidi性能优化之高效使用内存
    综合面试---常问知识点
    路由器
    域名系统
    IP地址与子网掩码
    网络层使用的协议
  • 原文地址:https://www.cnblogs.com/del/p/1211441.html
Copyright © 2011-2022 走看看