青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

l

成都手游碼農(nóng)一枚
隨筆 - 32, 文章 - 0, 評論 - 117, 引用 - 0
數(shù)據(jù)加載中……

windows動畫窗體。

同往常一樣,先放一章效果圖,這鴨子是會飛的哦。



效果類似常見的QQ寵物、360精靈之類的。

不說廢話了,還是說重點。

==================================================
   要實現(xiàn)這種效果,我的第一想法便是通過SetWindowRGN設(shè)置不規(guī)則窗體,然后更新。
顯然,這樣是最容易想到的,但是也不由的有點擔(dān)心效率,最終我也通過這種方式,實現(xiàn)了一個,
正如擔(dān)心的一樣,每秒6幀的速度偶爾會出現(xiàn)閃爍(當(dāng)然我的本本可能不是很給力- -。)。
   這種方式就是通過載入的位圖,獲取每個像素點,并生成相應(yīng)的HRGN,每幀動畫一個。
然后通過計時器切換,由于效果不是很好,在此就不貼代碼了。

   既然不能通過SetWindowRGN,那還能怎么做呢?其實windows自身已經(jīng)給了我們一個
處理這種位圖窗口的API,而且還可以實現(xiàn)透明,一說到透明很多人都應(yīng)該知道是那個API了。

Syntax

BOOL SetLayeredWindowAttributes(          HWND hwnd,
    COLORREF crKey,
    BYTE bAlpha,
    DWORD dwFlags
);
Parameters

hwnd
[
in] Handle to the layered window. A layered window is created by specifying WS_EX_LAYERED when creating the window with the CreateWindowEx function or by setting WS_EX_LAYERED via SetWindowLong after the window has been created.
crKey
[
in] COLORREF structure that specifies the transparency color key to be used when composing the layered window. All pixels painted by the window in this color will be transparent. To generate a COLORREF, use the RGB macro.
bAlpha
[
in] Alpha value used to describe the opacity of the layered window. Similar to the SourceConstantAlpha member of the BLENDFUNCTION structure. When bAlpha is 0, the window is completely transparent. When bAlpha is 255, the window is opaque.
dwFlags
[
in] Specifies an action to take. This parameter can be one or more of the following values.
LWA_COLORKEY
Use crKey 
as the transparency color.
LWA_ALPHA
Use bAlpha to determine the opacity of the layered window.
Return Value

If the function succeeds, the 
return value is nonzero. 
If the function fails, the 
return value is zero. To get extended error information, call GetLastError.


其實這個函數(shù)在以前也經(jīng)常用到,但主要是用它來實現(xiàn)透明,根本沒想到它還可以實現(xiàn)不規(guī)則窗體。
看了MSDN你應(yīng)該知道了吧,其實通過設(shè)置第二個顏色屬性便可過濾掉窗體中指定的某種顏色,達(dá)到
不規(guī)則窗體的效果。

設(shè)置透明色的代碼如下:再此將白色設(shè)置為透明。

HINSTANCE hInstance=(HINSTANCE)LoadLibrary("user32.dll");
        
if (hInstance)
        
{
            typedef BOOL(WINAPI 
*pFun)(HWND,COLORREF,BYTE,DWORD);     
            pFun  fun  
=  NULL;       
            fun
=(pFun)GetProcAddress(hInstance, "SetLayeredWindowAttributes");   
            SetWindowLong(GWL_EXSTYLE, GetWindowLong(GWL_EXSTYLE) 
| 0x80000);
            
if (fun)
            
{
                fun(hWnd, RGB(
255255255), 00x1);
            }

            FreeLibrary(hInstance);
        }

知道如何處理不規(guī)則窗體后剩下的就簡單了,在此我用的一半游戲中的(4*4)行走圖做的。
只需要在繪制的時候通過改變繪制區(qū)域坐標(biāo)來控制顯示的位置達(dá)到動畫的效果。
其中m_nX,m_nY分別是橫向幀數(shù) 和 豎向的幀數(shù) 在此為 4 * 4

void OnPaint(CDCHandle /*dc*/)
    
{
        CPaintDC dc(
*this);
        CDC bmpDC;
        CBitmapHandle bmpOld;
        CRect rtClient;

        GetClientRect(
&rtClient);
        
        bmpDC.CreateCompatibleDC(dc);
        bmpOld 
= bmpDC.SelectBitmap(m_bmpBox);

        
int nSubX = m_nWidth / m_nX;
        
int nSubY = m_nHeight / m_nY;

        dc.BitBlt(
00, nSubX, nSubY, bmpDC, m_nCurX * nSubX, 
            m_nCurY 
* nSubY, SRCCOPY);

        bmpDC.SelectBitmap(bmpOld);
    }

剩下就是一些輔助的功能了:m_nCurX m_nCurY 分別只是當(dāng)前橫向第幾幀 和 縱向的第幾幀

 /**
     * 實現(xiàn)移動窗口
     
*/

    UINT OnNcHitTest(CPoint point)
    
{
        
return HTCAPTION;
    }


    
/**
     * 更新動畫
     
*/

    
void OnTimer(UINT_PTR nIDEvent)
    
{
        
if (nIDEvent == ANIMA_TIMER)
        
{
            m_nCurX 
= (++m_nCurX) % m_nX;
            RedrawWindow();
        }

    }


    
/**
     * 改變方向
     
*/

    
void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
    
{
        
switch (nChar)
        
{
        
case VK_LEFT: m_nCurY = 1break;
        
case VK_RIGHT: m_nCurY = 2break;
        
case VK_UP: m_nCurY = 3break;
        
case VK_DOWN: m_nCurY = 0break;
        
case VK_ESCAPE:OnClose();break;
        }

    }


好了,結(jié)束,雖然沒啥技術(shù)含量,但也可以打發(fā)下無聊的時間。
以后有好玩的東西我也會更新在此。



posted on 2011-10-16 00:22 l1989 閱讀(3115) 評論(6)  編輯 收藏 引用 所屬分類: windows

評論

# re: windows動畫窗體。  回復(fù)  更多評論   

收藏。不過想要做出更復(fù)雜的窗口控制還是比較麻煩的。
2011-10-16 09:53 | 畢達(dá)哥拉斯半圓

# re: windows動畫窗體。  回復(fù)  更多評論   

不錯,感謝,收藏,原來qq寵物是這樣弄的啊,之前以為很神奇

# re: windows動畫窗體。  回復(fù)  更多評論   

@glueless human hair lace front wigs
QQ寵物和QQ秀,魔法表情全是Flash的
2011-10-16 17:25 | CzBiX

# re: windows動畫窗體。  回復(fù)  更多評論   

@CzBiX
這還真沒研究過~
其實除了窗體裁剪 動畫的實現(xiàn)很多方法,當(dāng)然用flash也是一種。
2011-10-16 17:31 | azl

# re: windows動畫窗體。  回復(fù)  更多評論   

@glueless human hair lace front wigs
QQ寵物室flash,如果是一幀一個圖片按這種方法那要多少bmp啊
2011-10-17 09:49 | Skill

# re: windows動畫窗體。  回復(fù)  更多評論   

不錯 收藏了 以后關(guān)注你
2011-10-17 13:06 | 無賴熊貓
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            影音先锋中文字幕一区| 国产精品欧美激情| 亚洲精品视频免费观看| 猛干欧美女孩| 亚洲精品国产精品国产自| 蜜桃av综合| 你懂的视频一区二区| 亚洲精品免费电影| 亚洲毛片在线观看| 国产精品视频一区二区高潮| 久久高清一区| 蜜臀99久久精品久久久久久软件| 亚洲精品少妇网址| 一本色道久久综合狠狠躁篇的优点 | 国产精品一区二区三区四区 | 亚洲激情社区| 亚洲精品一级| 国内精品免费午夜毛片| 亚洲人成在线播放| 欧美日韩1区| 久久综合婷婷| 欧美少妇一区| 欧美gay视频激情| 久久亚洲欧洲| 性欧美8khd高清极品| 欧美chengren| 久久精品国产久精国产思思| 麻豆freexxxx性91精品| 午夜精品久久久久久久白皮肤| 久久精品卡一| 欧美亚洲一区三区| 欧美日韩精品综合在线| 久久一本综合频道| 国产精品久久久久9999高清| 欧美激情第10页| 国产视频欧美| 亚洲伊人第一页| 亚洲三级免费观看| 久久精品国产精品亚洲综合| 亚洲欧美日韩视频二区| 欧美精品自拍偷拍动漫精品| 狼人天天伊人久久| 国产区日韩欧美| 一区二区精品在线| 日韩亚洲精品视频| 老司机久久99久久精品播放免费 | 一区二区三区免费观看| 久久亚裔精品欧美| 久久久久久国产精品一区| 国产精品久久久久久影院8一贰佰| 亚洲第一狼人社区| …久久精品99久久香蕉国产| 欧美一区二区在线看| 午夜影院日韩| 国产欧美一区二区色老头 | 亚洲第一偷拍| 一区二区三区在线视频免费观看 | 欧美主播一区二区三区| 欧美一区二区三区视频免费播放| 欧美色偷偷大香| 亚洲精品孕妇| 亚洲一区久久久| 欧美视频免费| 中文av一区二区| 亚洲男人的天堂在线| 国产精品久久久久毛片软件| 亚洲午夜激情| 欧美在线黄色| 激情婷婷亚洲| 久久尤物视频| 亚洲日本成人| 亚洲午夜精品久久| 国产精品日韩专区| 欧美伊人久久| 欧美/亚洲一区| 亚洲美女中出| 国产精品麻豆成人av电影艾秋| 中文在线资源观看网站视频免费不卡| 国产精品99久久久久久久久| 欧美三日本三级少妇三2023| 亚洲一区二区三区激情| 久久精品国产77777蜜臀| 激情五月综合色婷婷一区二区| 久久久女女女女999久久| 免费观看日韩av| 一区二区国产日产| 国产日韩欧美自拍| 免费不卡欧美自拍视频| 91久久精品国产91久久| 亚洲在线一区| 国产中文一区| 欧美乱人伦中文字幕在线| 亚洲视频在线免费观看| 欧美a级大片| 亚洲日本中文字幕区| 国产精品久久| 免费一级欧美片在线观看| 亚洲素人在线| 欧美顶级大胆免费视频| 亚洲欧美日韩另类| 91久久精品网| 国产一区二区三区观看| 欧美日韩高清在线观看| 欧美在线免费播放| 亚洲精品国久久99热| 久久综合亚州| 亚洲欧美怡红院| 亚洲精品欧美专区| 国内精品久久国产| 国产精品高潮在线| 欧美激情2020午夜免费观看| 亚洲欧洲av一区二区| 日韩午夜精品视频| 欧美国产一区二区三区激情无套| 午夜欧美精品| 亚洲一区二区三区免费视频| 亚洲第一久久影院| 国产性做久久久久久| 欧美日韩在线精品一区二区三区| 久久久综合免费视频| 午夜精品成人在线| 一区二区免费在线观看| 亚洲国产一区二区三区高清| 久热re这里精品视频在线6| 亚洲欧美日韩精品久久| 一区二区三区视频在线| 亚洲免费成人av| 亚洲美女91| 亚洲精品一品区二品区三品区| 国产一区二区三区免费观看| 欧美国产综合一区二区| 免费视频一区二区三区在线观看| 久久精品亚洲一区二区三区浴池| 欧美一级成年大片在线观看| 亚洲欧美日韩另类| 午夜日韩在线| 欧美亚洲一区二区三区| 亚洲免费视频在线观看| 亚洲天堂av电影| 中文高清一区| 亚洲尤物视频在线| 亚洲视频在线观看网站| 亚洲综合日韩中文字幕v在线| 亚洲一区二区三区在线| 亚洲视频第一页| 亚洲一区欧美二区| 亚洲一区二区视频在线| 亚洲欧美另类在线观看| 亚洲欧美成人| 久久精品夜色噜噜亚洲a∨| 久久国产精品一区二区| 久久偷窥视频| 欧美精品久久久久久久久老牛影院| 欧美精品亚洲精品| 国产精品久久亚洲7777| 国产欧美一区二区精品性色| 国产一区视频网站| 亚洲国产精品欧美一二99| 亚洲美女视频在线免费观看| 一本不卡影院| 亚洲尤物精选| 久久免费视频这里只有精品| 亚洲电影下载| 日韩一区二区精品葵司在线| 亚洲综合第一页| 久久精品中文| 欧美日本国产| 国产麻豆午夜三级精品| 在线播放日韩| 国产精品99久久久久久久久久久久| 性欧美1819性猛交| 欧美丰满少妇xxxbbb| 亚洲精品一区久久久久久| 亚洲在线观看视频网站| 久久久一二三| 欧美精品久久久久a| 欧美四级在线观看| 在线观看欧美日本| 亚洲欧美日韩中文播放| 欧美大片在线看| 亚洲影音先锋| 欧美大片国产精品| 国产日韩欧美成人| 99re8这里有精品热视频免费| 欧美有码在线视频| 亚洲日本在线观看| 久久久久久久久久久久久女国产乱 | 欧美成人a视频| 国产精品一区免费在线观看| 亚洲第一搞黄网站| 亚洲制服av| 亚洲精品久久久久久一区二区| 亚洲视频免费看| 男人插女人欧美| 国产精品视频xxx| 在线观看亚洲一区| 久久久久久噜噜噜久久久精品| 亚洲美女网站| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美日本亚洲|