zoukankan      html  css  js  c++  java
  • (原创)自己写的一个仿IMAGE功能的MEMO

    unit TestMemo;


    interface

    uses
      Windows, Classes, StdCtrls, Graphics, Controls, SysUtils, jpeg, Messages;

    type
      Test = class(TMemo)
      private
        Test: string;
        FCanvas: TCanvas;
        FPicture: TPicture;
        procedure SetPicture(Value: TPicture);
      published
        property Picture: TPicture read FPicture write SetPicture;
      public
        constructor Create(AOwner: TComponent); override;
        destructor Destroy; override;
        function LoadFromFile(FilePath: String; Memo: TWinControl): Boolean; overload;
        function LoadFromFile(FilePath: String): Boolean; overload;
        procedure Wmpiant(var Msg: Tmessage); message WM_PAINT;
      end;

    procedure Register;


    implementation

    procedure Register;
    begin
      RegisterComponents('Memo', [Test]);
    end;

    { Test }

    constructor Test.Create(AOwner: TComponent);
    begin
      inherited;
      FCanvas := TControlCanvas.Create;
      TControlCanvas(FCanvas).Control := Self;
      FPicture := TPicture.Create;
    end;

    //传入可视控件都可以
    function Test.LoadFromFile(FilePath: String; Memo: TWinControl): Boolean;
    begin
      if Not FileExists(FilePath) then
        Exit;
      TControlCanvas(FCanvas).Control := Memo;
      FPicture.LoadFromFile(FilePath);
      FCanvas.Draw(0,0, FPicture.Graphic);
    end;

    destructor Test.Destroy;
    begin
      FCanvas.Free;
      FPicture.Free;
      FCanvas := nil;
      FPicture := nil;
      inherited;
    end;

    function Test.LoadFromFile(FilePath: String): Boolean;
    begin
      if Not FileExists(FilePath) then
        Exit;
      FPicture.LoadFromFile(FilePath);
      FCanvas.Draw(0,0, FPicture.Graphic);
    end;

    procedure Test.SetPicture(Value: TPicture);
    begin
      FPicture.Assign(Value);
      FCanvas.Draw(0,0, FPicture.Graphic);
    end;

    procedure Test.Wmpiant(var Msg:Tmessage);
    begin
      if Msg.Msg = WM_PAINT then
      begin
        if Assigned(FPicture)  and Assigned(FCanvas) then
          FCanvas.Draw(0,0, FPicture.Graphic);
      end;
    end;

    end.

  • 相关阅读:
    iOS 后台定位
    关于烂代码的那些事
    APP上线前,如何做运营推广工作?
    iOS图片折叠效果:Layer的contentsRect属性和渐变层
    iOS中几种数据持久化方案:我要永远地记住你!
    iOS-CoreLocation:无论你在哪里,我都要找到你!
    轻松学习之 IMP指针的作用
    iOS之友盟错误统计解决
    文字渐变效果:图层中的mask属性
    如何坚持每周写一篇博客
  • 原文地址:https://www.cnblogs.com/chengxin1982/p/1364703.html
Copyright © 2011-2022 走看看