zoukankan      html  css  js  c++  java
  • 窗体背景的绘制(Windows窗体每次都会重绘其窗体背景,所以我们可以通过拦截窗体重绘背景的消息(WM_ERASEBKGND),并自定义方法来实现重绘窗体背景)

    核心思想:由于Windows窗体每次都会重绘其窗体背景,所以我们可以通过拦截窗体重绘背景的消息(WM_ERASEBKGND),并自定义方法来实现重绘窗体背景。通过TImage组件也可以实现,但是重写WM_ERASEBKGND消息的效率更高一些,所以还是推荐使用这种方法。

    (2)声明重绘背景消息响应函数

    void fastcall OnWMEraseBkgnd(TWMEraseBkgnd& Msg); 


    (3)添加消息映射

    BEGIN_MESSAGE_MAP
    //拦截重画背景的事件
    MESSAGE_HANDLER(WM_ERASEBKGND,TWMEraseBkgnd,OnWMEraseBkgnd); 
    END_MESSAGE_MAP(TForm);


    (4)编写自绘背景消息响应函数的代码

    复制代码
    void fastcall TFormMain::OnWMEraseBkgnd(TWMEraseBkgnd& Msg)
    {
        //重画背景
        TCanvas* canvas = new TCanvas;
        canvas->Handle = Msg.DC;
        int cx = ClientWidth/bmpFormBK->Width + 1;
        int cy = ClientHeight/bmpFormBK->Height + 1;
        for (int i=0; i<cy; i++)
        for (int j=0; j<cx; j++)
        {
            canvas->Draw(j*bmpFormBK->Width, i*bmpFormBK->Height,bmpFormBK); Msg.Result = true;
        }
        delete canvas;
    }

    http://www.cnblogs.com/songsu/articles/1336653.html

  • 相关阅读:
    深入浅出WPF之Binding的使用(二)
    深入浅出WPF之Binding的使用(一)
    C#中XML的读取
    DependencyProperty属性介绍
    System.Windows.Markup.IQueryAmbient 在未被应用的程序集中定义
    Unity调用windows系统dialog 选择文件夹
    #if
    协程
    将[-1,1]映射到[0,1]
    Editor模式下实例化Prefab
  • 原文地址:https://www.cnblogs.com/findumars/p/8447818.html
Copyright © 2011-2022 走看看