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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fg_win32drawinterface.cpp

?? 《道法自然》書的源碼FishGUI,一個(gè)跨平臺(tái)的界面庫
?? CPP
字號(hào):
/*--------------------------------------------------------------------------

	FG_Win32DrawInterface.cpp - Win32的繪圖接口類的實(shí)現(xiàn)文件

	本程序是FishGUI軟件的一部分

	版權(quán)所有 (C) 2003,2004 王詠武
	http://www.contextfree.net/wangyw/

----------------------------------------------------------------------------

	作者對(duì) FishGUI 軟件及其所有源代碼授權(quán)如下:

	允許任何個(gè)人、組織、機(jī)構(gòu)、企業(yè)無償獲得、修改、使用、重新發(fā)布 FishGUI 軟
	件及其源代碼,或按照有償或者無償?shù)姆绞桨l(fā)行基于 FishGUI 源代碼的全部或部
	分內(nèi)容開發(fā)的軟件產(chǎn)品,——但行使以上權(quán)利時(shí),須遵守以下約定:

	1、重新發(fā)布 FishGUI 軟件及其源代碼時(shí),不得隱去軟件及其源代碼中原有的版
	   權(quán)信息和開發(fā)者標(biāo)識(shí)。

	2、發(fā)行基于 FishGUI 源代碼的全部或部分內(nèi)容開發(fā)的軟件產(chǎn)品時(shí),必須在產(chǎn)品
	   的顯著位置標(biāo)明以下字樣:

	   【本產(chǎn)品的一部分功能是基于王詠武在 FishGUI 軟件中的工作完成的】

	3、在正式出版物中引用 FishGUI 的文檔、源代碼或注釋內(nèi)容的,應(yīng)注明軟件的
	   原作者為王詠武。

--------------------------------------------------------------------------*/
/*! \addtogroup OSAdaptor
 *  @{ 
 */

/*! \file
 *  \brief Win32的繪圖接口類的實(shí)現(xiàn)文件
 */

/*! @} */

#include "stdio.h"
#include "windows.h"
#include "FG_Win32DrawInterface.h"

#if defined(WIN32) && defined(_DEBUG)
    /* Trace memory allocation in windows debug version */
    #include <crtdbg.h>
    static char THIS_FILE[] = __FILE__;
    #define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
#endif  /* _DEBUG */
    
//##ModelId=3F71AB2E0279
FG_Win32DrawInterface::~FG_Win32DrawInterface()
{
    // 刪除繪圖資源
    DeleteDC(m_hMemDC);
    DeleteObject(m_hBitmap);
    DeleteObject(m_hFont);
}
    
//##ModelId=3F4EDED00326
void FG_Win32DrawInterface::BeginDraw(const FG_Rect & rect)
{
    if (! m_iDrawCount)
    {
        if (! m_hMemDC)
        {
            // 創(chuàng)建繪圖緩沖區(qū)
            m_hMemDC = CreateCompatibleDC(m_hDC);
            m_hBitmap = CreateCompatibleBitmap(m_hDC, SCREEN_WIDTH, SCREEN_HEIGHT);
            SelectObject(m_hMemDC, m_hBitmap);
    
            m_hFont = CreateFont(15, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, 
                                 OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, 
                                 DEFAULT_QUALITY, DEFAULT_PITCH, "宋體");
            SelectObject(m_hMemDC, m_hFont);
        }

        // 初始無效區(qū)
        m_Invalid = rect;
    }
    else
    {
        // 組合無效區(qū)
        m_Invalid |= rect;
    }
    m_iDrawCount ++;
}

//##ModelId=3F4EDED003A8
void FG_Win32DrawInterface::EndDraw()
{
    m_iDrawCount --;
    if (! m_iDrawCount)
    {
        // 把緩沖區(qū)內(nèi)容刷新到屏幕上
        BitBlt(m_hDC, m_Invalid.wLeft, m_Invalid.wTop, m_Invalid.Width(), m_Invalid.Height(), m_hMemDC, 
            m_Invalid.wLeft, m_Invalid.wTop, SRCCOPY);
    }
}

//##ModelId=3F4EDED003E4
void FG_Win32DrawInterface::FillRect(const FG_Rect & rect, const COLORVAL ForeColor, const COLORVAL background)
{
    if (m_hMemDC)
    {
        // 創(chuàng)建繪圖所用資源
        HPEN hPen = CreatePen(PS_SOLID, 1, ForeColor);
        HBRUSH hBrush = CreateSolidBrush(background);

        HPEN hPenOld = (HPEN)SelectObject(m_hMemDC, hPen);
        HBRUSH hBrushOld = (HBRUSH)SelectObject(m_hMemDC, hBrush);

        Rectangle(m_hMemDC, rect.wLeft, rect.wTop, rect.wRight + 1, rect.wBottom + 1);

        // 刪除繪圖資源
        SelectObject(m_hMemDC, hPenOld);
        DeleteObject(hPen);
        SelectObject(m_hMemDC, hBrushOld);
        DeleteObject(hBrush);
    }
}

//##ModelId=3F4EDED10133
void FG_Win32DrawInterface::Line(const short x1, const short y1, const short x2, const short y2, const COLORVAL color)
{
    if (m_hMemDC)
    {
        // 創(chuàng)建繪圖所用資源
        HPEN hPen = CreatePen(PS_SOLID, 1, color);

        HPEN hPenOld = (HPEN)SelectObject(m_hMemDC, hPen);

        MoveToEx(m_hMemDC, x1, y1, NULL);
        LineTo(m_hMemDC, x2, y2);
        // Win32的畫線函數(shù)不畫最后一點(diǎn),和FishGUI的定義不同
		// 這里需要加畫最后一點(diǎn)
        SetPixel(m_hMemDC, x2, y2, color);

        // 刪除繪圖資源
        SelectObject(m_hMemDC, hPenOld);
        DeleteObject(hPen);
    }
}

//##ModelId=3F4EDED1031E
void FG_Win32DrawInterface::DrawText(const char * Text, const short x, const short y, const COLORVAL color)
{
    if (m_hMemDC)
    {
        SetTextColor(m_hMemDC, color);
        SetBkMode(m_hMemDC, TRANSPARENT);
        TextOut(m_hMemDC, x, y, Text, strlen(Text));
    }
}

//##ModelId=3F4EDED200DA
WORD FG_Win32DrawInterface::GetTextWidth(const char * Text)
{
    if (m_hMemDC)
    {
        SIZE size;
        GetTextExtentPoint(m_hMemDC, Text, strlen(Text), & size);
        return (WORD)size.cx;
    }
    else
        return 0;
}

//##ModelId=3F4EDED20184
WORD FG_Win32DrawInterface::GetTextHeight(const char * Text)
{
    if (m_hMemDC)
    {
        SIZE size;
        GetTextExtentPoint(m_hMemDC, Text, strlen(Text), & size);
        return (WORD)size.cy;
    }
    else
        return 0;
}

//##ModelId=3F4EDED20239
void FG_Win32DrawInterface::DrawBitmap(const char * pBmpName, const short x1, const short y1)
{
    if (m_hMemDC)
    {
        HBITMAP hBitmap1 = (HBITMAP)LoadImage(NULL, pBmpName, IMAGE_BITMAP, 0, 0,
                                    LR_DEFAULTSIZE | LR_LOADFROMFILE);
        if (hBitmap1)
        {
            BITMAP info;
            GetObject(hBitmap1, sizeof(BITMAP), & info);

            HDC hMemDC1 = CreateCompatibleDC(m_hDC);
            SelectObject(hMemDC1, hBitmap1);
            BitBlt(m_hMemDC, x1, y1, x1 + info.bmWidth - 1, y1 + info.bmHeight - 1, hMemDC1, 0, 0, SRCCOPY);
            DeleteDC(hMemDC1);
            DeleteObject(hBitmap1);
        }
    }
}

//##ModelId=3F6193B201F2
void FG_Win32DrawInterface::DrawPolyLine(const short n, const FG_Point * vert, const COLORVAL color)
{
    if (m_hMemDC)
    {
        // 創(chuàng)建繪圖所用資源
        HPEN hPen = CreatePen(PS_SOLID, 1, color);

        HPEN hPenOld = (HPEN)SelectObject(m_hMemDC, hPen);

        POINT * lppt = new POINT[n];
        for (short i = 0; i < n; i ++)
        {
            lppt[i].x = vert[i].x;
            lppt[i].y = vert[i].y;
        }

        Polyline(m_hMemDC, lppt, n);
        SetPixel(m_hMemDC, lppt[n - 1].x, lppt[n - 1].y, color);

        delete [] lppt;

        // 刪除繪圖資源
        SelectObject(m_hMemDC, hPenOld);
        DeleteObject(hPen);
    }
}

//##ModelId=3F6EAC820075
void FG_Win32DrawInterface::DrawDotRect(const FG_Rect & rect, const COLORVAL color)
{
    if (m_hMemDC)
    {
        // 創(chuàng)建繪圖所用資源
        HPEN hPen = CreatePen(PS_DOT, 1, color);

        HPEN hPenOld = (HPEN)SelectObject(m_hMemDC, hPen);
        HBRUSH hBrushOld = (HBRUSH)SelectObject(m_hMemDC, GetStockObject(NULL_BRUSH));

        Rectangle(m_hMemDC, rect.wLeft, rect.wTop, rect.wRight + 1, rect.wBottom + 1);

        // 刪除繪圖資源
        SelectObject(m_hMemDC, hPenOld);
        DeleteObject(hPen);
        SelectObject(m_hMemDC, hBrushOld);
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合色综合色综合色综合色综合 | 欧美国产成人精品| 国产精品羞羞答答xxdd| 国产色产综合产在线视频| 国产成人免费视频网站高清观看视频 | 久久se这里有精品| 久久久久久免费毛片精品| 成人黄色在线视频| 亚洲综合网站在线观看| 欧美老肥妇做.爰bbww视频| 蜜桃视频免费观看一区| 久久男人中文字幕资源站| 91亚洲午夜精品久久久久久| 亚洲成av人片www| 2023国产精品视频| 91在线小视频| 日韩av在线免费观看不卡| 欧美精品一区二区三区蜜桃视频| 成人一级片网址| 亚洲一区免费在线观看| 精品国产一区二区亚洲人成毛片| av亚洲精华国产精华| 亚洲国产美国国产综合一区二区| 精品成人一区二区三区四区| 色综合久久久久综合体 | 久久国产尿小便嘘嘘尿| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 色婷婷av一区二区三区大白胸| 午夜视频一区在线观看| 国产欧美一区二区三区沐欲 | 337p亚洲精品色噜噜噜| 国产激情视频一区二区三区欧美 | 欧美在线|欧美| 狠狠色伊人亚洲综合成人| 亚洲精品久久久蜜桃| 久久夜色精品国产欧美乱极品| 日本高清视频一区二区| 国产精品自产自拍| 日韩va亚洲va欧美va久久| 亚洲欧美中日韩| 久久亚洲二区三区| 欧美精品电影在线播放| 91美女视频网站| 国产一区二区三区| 日本aⅴ免费视频一区二区三区| 日韩毛片高清在线播放| 国产亚洲精品中文字幕| 欧美一区二区三区在线| 色婷婷综合久久久中文一区二区 | 欧美系列日韩一区| 成人午夜私人影院| 精品一区二区三区在线播放视频| 玉足女爽爽91| 亚洲日本va午夜在线影院| 久久久久久99精品| 精品少妇一区二区| 91精品欧美一区二区三区综合在 | 亚洲美女屁股眼交3| 国产欧美日韩不卡免费| 91精品国产免费| 欧美日韩一区二区三区在线| 色综合中文字幕国产 | 日韩欧美一二区| 欧美日韩国产成人在线91| 色94色欧美sute亚洲线路一久| 波多野结衣中文字幕一区| 春色校园综合激情亚洲| 国产寡妇亲子伦一区二区| 精品一二三四区| 精品一区二区在线看| 久久精品国产在热久久| 久久se精品一区二区| 国内精品国产三级国产a久久| 日本不卡视频在线观看| 男人操女人的视频在线观看欧美 | 国产区在线观看成人精品| 久久免费精品国产久精品久久久久| 日韩三级在线观看| 日韩精品一区二区三区四区| 欧美大肚乱孕交hd孕妇| 亚洲精品一区二区三区蜜桃下载| 精品国产一区二区三区久久影院 | 偷窥国产亚洲免费视频 | 精彩视频一区二区三区| 紧缚奴在线一区二区三区| 国产尤物一区二区在线| 国产成人精品亚洲日本在线桃色| 国产91丝袜在线播放| 播五月开心婷婷综合| 欧洲激情一区二区| 91精品在线观看入口| 欧美videofree性高清杂交| 久久日韩精品一区二区五区| 中文一区二区完整视频在线观看 | 午夜伦欧美伦电影理论片| 日本va欧美va瓶| 国产精品888| 色国产综合视频| 欧美一区二区三级| 国产日韩欧美a| 夜夜夜精品看看| 免费看欧美美女黄的网站| 国产高清精品在线| 91豆麻精品91久久久久久| 日韩欧美的一区二区| 国产精品免费久久久久| 五月天网站亚洲| 国产精品亚洲专一区二区三区| 91天堂素人约啪| 欧美电影免费观看高清完整版在 | 国产在线精品一区在线观看麻豆| 不卡一区二区在线| 69久久99精品久久久久婷婷| 久久久精品欧美丰满| 日韩精品一区第一页| 国产福利一区二区三区| 精品1区2区3区| 国产午夜精品久久| 亚洲一区二区三区四区在线免费观看 | 久久只精品国产| 亚洲一区二区视频在线| 国产成人在线网站| 欧美理论电影在线| ㊣最新国产の精品bt伙计久久| 免费久久99精品国产| 91香蕉视频mp4| 久久九九久久九九| 日韩成人精品在线观看| 99久久er热在这里只有精品15| 日韩欧美二区三区| 亚洲高清免费观看高清完整版在线观看| 国产一区二区在线看| 欧美老女人在线| 一区二区三区四区视频精品免费 | 欧美日韩激情一区二区三区| 中文字幕av一区二区三区| 美女一区二区视频| 欧美性生活久久| 亚洲欧洲日韩在线| 国产精品白丝jk黑袜喷水| 欧美一级生活片| 亚洲国产乱码最新视频| 99久久婷婷国产综合精品| 久久久久久久久久电影| 麻豆久久久久久| 337p亚洲精品色噜噜噜| 亚洲国产视频a| 91国偷自产一区二区三区观看| 中文字幕欧美三区| 国产精品一二三在| 欧美成人欧美edvon| 日日摸夜夜添夜夜添亚洲女人| 91精彩视频在线观看| 亚洲欧美激情在线| 91麻豆123| 中文字幕视频一区| 北条麻妃一区二区三区| 国产日韩欧美不卡| 粉嫩高潮美女一区二区三区| 久久婷婷国产综合精品青草| 国内久久精品视频| 精品久久一二三区| 裸体在线国模精品偷拍| 日韩欧美中文字幕精品| 久久超级碰视频| 欧美精品一区二区三| 久久国产精品99精品国产| 欧美一区二区三区色| 久久国产精品99久久久久久老狼 | 色婷婷综合视频在线观看| 亚洲色图欧洲色图婷婷| 一本高清dvd不卡在线观看| 亚洲精品自拍动漫在线| 日本精品视频一区二区三区| 久久精品国产99久久6| 日韩一区二区三区av| 激情综合色播激情啊| 国产欧美日韩精品a在线观看| 粉嫩aⅴ一区二区三区四区 | 欧美日韩视频第一区| 五月激情综合色| 久久日韩粉嫩一区二区三区| 成人午夜免费av| 一区二区三区视频在线看| 欧美日韩一区视频| 久久99久久99| 国产精品久久三| 欧美精品粉嫩高潮一区二区| 久久不见久久见免费视频7 | 亚洲专区一二三| 日韩色在线观看| 北条麻妃一区二区三区| 亚洲成人免费视频| 337p粉嫩大胆色噜噜噜噜亚洲| 成人三级在线视频| 亚洲一区二区三区在线| 精品毛片乱码1区2区3区| 成人精品视频一区二区三区尤物| 亚洲一二三区不卡| 久久久久久久久久电影|