亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? canvas.h

?? c+++ game uploading now
?? H
字號:
/**
 @file
 Various classes for Win32 GDI handling
*/
#if !defined _CANVAS_H_
#define _CANVAS_H_
#include <windows.h>

namespace Win
{
    /**
     class Canvas encapsulates an win32 HDC, used as a base class 
     (constructor is protected)*/
    class Canvas
    {
    public:
        /**
          type conversion to HDC */
        operator HDC() 
        { 
            return _hdc; 
        }
    
        /** 
          sets the pixel with given coordinates to the specified color*/
        void SetPixel(int x, int y, COLORREF color)
        {
            ::SetPixel(_hdc, x, y, color);
        }
	    
        /**
         cleans a rectangular shape with white */
        void WhiteWash(const RECT &rect)
        {
            ::PatBlt(_hdc, rect.left, rect.top, 
                     rect.right, rect.bottom, WHITENESS);
        }

        /**
         cleans the rectagular shape with the curently selected brush */
        void Wash(const RECT &rect)
        {
            ::PatBlt(_hdc, rect.left, rect.top, 
                     rect.right, rect.bottom, PATCOPY);
        }

        /** 
         cleans a rectangular shape with black */
        void BlackWash(const RECT &rect)
        {
            ::PatBlt(_hdc, rect.left, rect.top,
                     rect.right, rect.bottom, BLACKNESS);
        }
	    
        /**
         changes current possition */
        void MoveTo(int x, int y)
        {
            ::MoveToEx(_hdc, x, y, 0);
        }

        /** 
         draws a line from current position to (x,y) */
        void LineTo(int x, int y)
        {
            ::LineTo (_hdc, x, y);
        }

        /**
         draws a line connecting two points */
        void Line(int x1, int y1, int x2, int y2)
        {
            MoveTo(x1, y1);
            LineTo(x2, y2);
        }

        /**
         draws an ellipse in the specified bounding rectangle */
        void Ellipse(int x1, int y1, int x2, int y2)
        {
            ::Ellipse(_hdc, x1, y1, x2, y2);
        }

        /**
         rectangle */
        void Frame(RECT const &rect, HBRUSH brush);

        /**
         fill a rectangle */
        void FillRect(RECT const &rect, HBRUSH brush);

        /**
         selects a GDI object into the canvas */
        void SelectObject(void* pObj)
        {
            ::SelectObject(_hdc, pObj);
        }

        /**
         draws fromated text in a bounding rectangle */
        void Text(const char *text, RECT &rect, UINT format)
        {
            ::DrawText(_hdc, text, -1, &rect, format);
        }

        /**
         sets the text color */
        void SetTextColor(COLORREF col)
        {
            ::SetTextColor(_hdc, col);
        }

        /**
         sets the background color */
        void SetBkrndColor(COLORREF col)
        {
            ::SetBkColor(_hdc, col);
        }

    protected:
        /**
         protected constructor, no Canvas objects can be instatieted 
         directly */
        Canvas(HDC hdc) 
            :_hdc(hdc) {}

        /** handle to the device context */
        HDC  _hdc;
    };

    /**
       class PaintCanvas is used to encapsulate in the spirit of resource 
       managment the win32 BeginPaint EndPaint Win32 API call pair. 
       Suitable for painting after a WM_PAINT message. */
    class PaintCanvas: public Canvas
    {
    public:
        /**
         @param hwnd handle to the window to be painted upon. */
        PaintCanvas(HWND hwnd)
		    : Canvas(::BeginPaint(hwnd, &_paint)),
             _hwnd(hwnd)
        {}

        /**
         destructor, automatically calls EndPaint */
        ~PaintCanvas()
        {
            ::EndPaint(_hwnd, &_paint);
        }

        /**
         returns the top of the rectangle in which the painting is 
         requested */
        int Top() const    
        { 
            return _paint.rcPaint.top; 
        }

        /**
         returns the bottom of the rectangle in which the painting is 
         requested */
        int Bottom() const 
        { 
            return _paint.rcPaint.bottom;
        }

        /**
         returns the left of the rectangle in which the painting is 
         requested */
        int Left() const   
        { 
            return _paint.rcPaint.left; 
        }

        /**
         returns the right of the rectangle in which the painting is 
         requested */
        int Right() const  
        { 
            return _paint.rcPaint.right; 
        }

        /**
         returns the rectangle in which the painting is requested */
        const RECT& PaintRect() const
        {
            return _paint.rcPaint;
        }

    protected:
        PAINTSTRUCT _paint; 
        HWND        _hwnd;
    };

    /** 
     class UpdateCanvas following the First Rule of Acquisition 
     encapsulates win32 API call pairs GetDC and ReleaseDC. 
     Suitable for painting outside the WM_PAINT message processing. */
    class UpdateCanvas: public Canvas
    {
    public:

        /**
         @param hwnd handle to the window to be painted upon. */
        UpdateCanvas(HWND hwnd)
	      :Canvas(::GetDC(hwnd)),
           _hwnd(hwnd)
        {}

        /**
         destructor, automatically calls ReleaseDC */
        ~UpdateCanvas()
        {
            ::ReleaseDC(_hwnd, _hdc);
        }
    protected:
        HWND _hwnd;
    };

    /**
     class MemCanvas used to draw on a piece of memory
     encapsulates the CreateCompatibleDC and DeleteDC Win32 API calls */
    class MemCanvas: public Canvas
    {
    public:
        /**
         @param hdc handle to the target device context */
        MemCanvas(HDC hdc)
          :Canvas(::CreateCompatibleDC(hdc))
        {}

        /**
         destructor, automatically calls DeleteDC */
        ~MemCanvas()
        {
            ::DeleteDC(_hdc); 
        }
    };

    /**
      BitmapCanvas to draw on a bitmap in found memory */
    class BitmapCanvas: public MemCanvas
    {
    public:
        /**
         @param hdc handle to the target device context
         @param hBitmap handle to the bitmap */
        BitmapCanvas(HDC hdc, HBITMAP hBitmap)
          :MemCanvas(hdc)
        {
            _hOldBitmap=reinterpret_cast<HBITMAP>
                            (::SelectObject(_hdc, hBitmap));
        }

        ~BitmapCanvas()
        {
            ::SelectObject(_hdc, _hOldBitmap);
        }

    private:
        HBITMAP _hOldBitmap;
    };
}
#endif //_CANVAS_H_

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费视频免费观看| 日本一区二区三区dvd视频在线| av中文字幕在线不卡| 国产精品亚洲专一区二区三区| 麻豆精品视频在线观看| 日本中文字幕一区二区视频| 天天综合天天综合色| 亚洲一区二区中文在线| 亚洲电影一级黄| 亚洲成人一二三| 午夜精品久久久久久久蜜桃app| 一区二区三区免费看视频| 一区二区在线观看视频| 亚洲免费看黄网站| 一区二区理论电影在线观看| 一区二区三区高清不卡| 亚洲成av人片一区二区| 香蕉成人伊视频在线观看| 亚洲va欧美va天堂v国产综合| 亚洲va欧美va天堂v国产综合| 日韩国产在线观看一区| 美女尤物国产一区| 国产传媒一区在线| 99这里只有久久精品视频| 色综合网色综合| 欧美性生活久久| 91精品国产欧美一区二区成人| 日韩一级二级三级| 久久久蜜臀国产一区二区| 国产日韩三级在线| 综合久久综合久久| 日韩精品福利网| 国产一区二区三区香蕉| 成人不卡免费av| 欧美性一二三区| 26uuu国产在线精品一区二区| 国产午夜精品一区二区三区视频 | 99久久精品情趣| 欧美三级电影网| 精品福利二区三区| 国产精品福利av| 日韩精品乱码av一区二区| 国产精品99久久久| 色婷婷久久综合| 欧美成人精品福利| 国产精品国产三级国产有无不卡| 亚洲国产精品欧美一二99| 国产美女久久久久| 91高清视频免费看| 欧美精品一区二区三区视频| 亚洲私人影院在线观看| 男女男精品视频网| youjizz久久| 日韩视频在线你懂得| 国产精品少妇自拍| 日韩国产精品久久久久久亚洲| 国产成人久久精品77777最新版本| 欧美性一级生活| 国产无人区一区二区三区| 亚洲一区二区三区视频在线播放 | 精品系列免费在线观看| 91在线观看免费视频| 欧美一级日韩不卡播放免费| 国产精品蜜臀av| 美女视频黄 久久| 日本乱人伦aⅴ精品| 337p日本欧洲亚洲大胆精品| 亚洲综合视频在线观看| 懂色av一区二区夜夜嗨| 日韩一区国产二区欧美三区| 亚洲男人电影天堂| 国产精品12区| 91精品国产aⅴ一区二区| 亚洲视频在线一区观看| 国产麻豆成人传媒免费观看| 欧美私人免费视频| 国产精品精品国产色婷婷| 黄页网站大全一区二区| 91精品国产91热久久久做人人| 中文字幕亚洲综合久久菠萝蜜| 狠狠久久亚洲欧美| 欧美一区二区日韩| 亚洲午夜国产一区99re久久| 成人avav影音| 日本一区二区三区免费乱视频| 日本最新不卡在线| 欧美另类高清zo欧美| 亚洲激情自拍偷拍| jizz一区二区| 国产欧美日韩综合精品一区二区| 美女视频一区在线观看| 91精品国产欧美一区二区18 | 蜜桃av噜噜一区| 欧美日韩在线观看一区二区| 亚洲女同ⅹxx女同tv| 成人性生交大片免费看在线播放| 久久久亚洲精品一区二区三区| 久久爱另类一区二区小说| 欧美一区二区三区免费| 午夜精品一区在线观看| 欧美日韩一区在线| 五月天一区二区三区| 欧美三级电影网| 午夜精品一区二区三区三上悠亚| 欧美日韩国产一级二级| 亚洲一区影音先锋| 欧美三级视频在线| 日韩中文字幕亚洲一区二区va在线| 日本精品一区二区三区四区的功能| 中文字幕一区二区三区在线播放| 丁香亚洲综合激情啪啪综合| 国产欧美日韩综合| 成人亚洲一区二区一| 日韩毛片视频在线看| 色综合天天综合网天天狠天天 | 高清不卡一区二区| 欧美国产一区在线| jizzjizzjizz欧美| 一区二区三区欧美久久| 欧美网站一区二区| 日本va欧美va瓶| 精品区一区二区| 成人动漫一区二区三区| 亚洲乱码国产乱码精品精小说| 在线观看不卡一区| 日韩电影一区二区三区| 日韩欧美一二三四区| 国产精品综合一区二区| 国产精品免费av| 欧亚洲嫩模精品一区三区| 人人爽香蕉精品| 久久伊人蜜桃av一区二区| 成人性生交大合| 亚洲午夜精品一区二区三区他趣| 在线播放视频一区| 国产在线一区观看| 最新日韩av在线| 欧美电影在线免费观看| 精品在线免费观看| 国产精品福利一区| 91.xcao| 国产成人在线看| 亚洲一区在线视频| 久久综合久久综合久久| 北岛玲一区二区三区四区| 香蕉加勒比综合久久| 久久精品一区二区三区四区| 色一情一伦一子一伦一区| 日韩av一二三| 亚洲欧洲三级电影| 欧美一级黄色大片| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 99久久精品免费| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美国产欧美亚州国产日韩mv天天看完整 | 老司机免费视频一区二区| 欧美激情在线观看视频免费| 欧美在线观看一区二区| 精品一区二区在线视频| 亚洲欧美日韩国产综合| 日韩欧美国产一区二区三区 | 国产成人av电影在线观看| 亚洲黄色免费网站| 精品国产髙清在线看国产毛片| 99精品视频免费在线观看| 日韩电影在线一区二区三区| 中文字幕一区二区三中文字幕| 日韩一级免费一区| 在线观看免费成人| 粉嫩嫩av羞羞动漫久久久 | 欧洲精品一区二区| 国产福利一区二区| 天天综合网天天综合色| 亚洲日本va在线观看| 久久一夜天堂av一区二区三区| 欧美日韩国产综合一区二区| 国产成人精品免费在线| 日韩成人免费电影| 亚洲猫色日本管| 中文av一区二区| 欧美精品一区二区三区很污很色的| 在线免费观看一区| 不卡视频一二三四| 国产一区 二区 三区一级| 全部av―极品视觉盛宴亚洲| 亚洲最新在线观看| 日韩一区欧美小说| 国产偷国产偷亚洲高清人白洁| 欧美一级片在线| 欧美日韩一区二区不卡| 亚洲欧洲av在线| 久久久www免费人成精品| 欧美一区二区三区婷婷月色| 欧美色精品天天在线观看视频| 99久久国产综合精品色伊 | 欧美人与禽zozo性伦| 色网站国产精品| av激情综合网| 成人激情视频网站| 成人av手机在线观看|