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

l

成都手游碼農一枚
隨筆 - 32, 文章 - 0, 評論 - 117, 引用 - 0
數據加載中……

windows動畫窗體。

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



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

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

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

   既然不能通過SetWindowRGN,那還能怎么做呢?其實windows自身已經給了我們一個
處理這種位圖窗口的API,而且還可以實現透明,一說到透明很多人都應該知道是那個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.


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

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

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);
        }

知道如何處理不規則窗體后剩下的就簡單了,在此我用的一半游戲中的(4*4)行走圖做的。
只需要在繪制的時候通過改變繪制區域坐標來控制顯示的位置達到動畫的效果。
其中m_nX,m_nY分別是橫向幀數 和 豎向的幀數 在此為 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 分別只是當前橫向第幾幀 和 縱向的第幾幀

 /**
     * 實現移動窗口
     
*/

    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;
        }

    }


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



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

評論

# re: windows動畫窗體。  回復  更多評論   

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

# re: windows動畫窗體。  回復  更多評論   

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

# re: windows動畫窗體。  回復  更多評論   

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

# re: windows動畫窗體。  回復  更多評論   

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

# re: windows動畫窗體。  回復  更多評論   

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

# re: windows動畫窗體。  回復  更多評論   

不錯 收藏了 以后關注你
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>
            久久国产精品一区二区| 午夜影视日本亚洲欧洲精品| 欧美日韩一区在线播放| 久久经典综合| 中文精品视频| 亚洲电影免费观看高清| 欧美在线视频一区二区| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 浪潮色综合久久天堂| 亚洲一品av免费观看| 亚洲国产精品第一区二区三区| 久久精品国产亚洲精品| 亚洲影院色无极综合| 一本色道久久综合亚洲91| 亚洲国产精品精华液2区45| 国产一区二三区| 国产精品色网| 国产精品成人播放| 欧美日韩1234| 欧美高清视频www夜色资源网| 久久久国产一区二区三区| 小处雏高清一区二区三区| 亚洲永久免费观看| 亚洲视频图片小说| 一级成人国产| 99热这里只有精品8| 亚洲人成网站在线观看播放| 欧美电影美腿模特1979在线看 | 久久国产精品99精品国产| 亚洲女人天堂成人av在线| 一区电影在线观看| 在线亚洲观看| 亚洲性感美女99在线| 亚洲手机在线| 亚洲欧美日韩一区二区| 午夜精品一区二区三区在线| 午夜精品av| 久久99伊人| 久久手机精品视频| 麻豆精品网站| 欧美不卡视频一区| 欧美日韩国产一区| 国产精品日韩电影| 国产视频久久| 极品少妇一区二区三区| 在线观看精品| 亚洲靠逼com| 一区二区三区国产精品| 亚洲自拍偷拍福利| 欧美一区二区视频免费观看| 欧美综合国产| 美女国产精品| 亚洲欧洲日产国产综合网| 夜夜嗨av一区二区三区网页| 亚洲欧美精品| 久久久亚洲午夜电影| 欧美大片一区二区三区| 欧美午夜在线| 国产一区 二区 三区一级| 在线欧美日韩| 亚洲亚洲精品三区日韩精品在线视频| 亚洲欧美在线看| 久久综合一区| 亚洲精品一区二区三区四区高清| 在线一区日本视频| 久久精品国产亚洲aⅴ| 欧美v亚洲v综合ⅴ国产v| 欧美色欧美亚洲另类二区| 国产日韩欧美一区二区三区在线观看 | 久久久久久午夜| 亚洲国产高清aⅴ视频| 一本色道久久综合一区| 欧美在线一级va免费观看| 欧美成人午夜77777| 国产精品美女www爽爽爽| 影音先锋另类| 亚洲午夜精品福利| 葵司免费一区二区三区四区五区| 亚洲欧洲一区二区天堂久久| 午夜精品影院在线观看| 欧美国产精品一区| 国产日本欧美一区二区| 国产欧美午夜| 午夜伦理片一区| 欧美成在线观看| 午夜综合激情| 极品av少妇一区二区| 欧美激情一区二区三区不卡| 亚洲午夜精品一区二区三区他趣| 久久精品国产96久久久香蕉| 亚洲第一天堂av| 国产精品成人播放| 久久久国产一区二区| 日韩亚洲欧美高清| 久久人91精品久久久久久不卡| 日韩一本二本av| 激情久久影院| 国产精品美女久久久久久2018| 久久亚裔精品欧美| 欧美中文字幕在线| 久久久综合网站| 久久这里只有| 欧美精品一区三区| 国产日韩欧美在线播放| 狠狠色噜噜狠狠狠狠色吗综合| 国产情侣一区| 亚洲一区二区3| 久久久久久网址| 亚洲美女av网站| 欧美国内亚洲| 久久九九免费| 亚洲国产精品成人综合| 欧美一区2区视频在线观看| 国产精品sss| 制服丝袜激情欧洲亚洲| 亚洲缚视频在线观看| 久久蜜桃精品| 精品不卡一区| 久久午夜视频| 久久国产欧美精品| 国产日韩av高清| 久久精品卡一| 欧美一区二区三区视频免费播放| 国产精品视频你懂的| 亚洲制服欧美中文字幕中文字幕| 亚洲美女av在线播放| 欧美日本久久| 中日韩男男gay无套| 亚洲免费成人| 欧美日韩天堂| 亚洲在线视频一区| 亚洲午夜视频| 国产日韩在线视频| 久久精品视频在线播放| 久久不射中文字幕| 亚洲第一久久影院| 欧美国产大片| 欧美精品九九99久久| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 欧美激情国产日韩精品一区18| 亚洲日本aⅴ片在线观看香蕉| 亚洲高清免费视频| 欧美男人的天堂| 亚洲性线免费观看视频成熟| 亚洲午夜在线| 国产综合网站| 欧美国产三区| 欧美日韩在线播放三区| 午夜精品久久久久久久久久久| 亚洲自啪免费| 激情六月综合| 亚洲经典三级| 国产精品日本一区二区| 久久五月天婷婷| 久久先锋影音av| 浪潮色综合久久天堂| 久久久国产午夜精品| 国产精品毛片a∨一区二区三区|国| 亚洲主播在线| 亚洲视频日本| 在线成人www免费观看视频| 亚洲免费视频在线观看| 欧美激情亚洲视频| 欧美日韩一区自拍| 午夜日韩福利| 久久久久久婷| 99成人在线| 亚洲综合电影一区二区三区| 尤物九九久久国产精品的特点 | 久久av免费一区| 亚洲精品在线免费观看视频| 亚洲一区二区三区视频| 亚洲成人资源| 亚洲神马久久| 亚洲国产日韩欧美| 亚洲在线播放电影| 亚洲人成绝费网站色www| 亚洲自拍都市欧美小说| 亚洲欧洲日韩女同| 亚洲欧美国产日韩天堂区| 亚洲麻豆一区| 亚洲毛片在线| 国自产拍偷拍福利精品免费一| 鲁鲁狠狠狠7777一区二区| 国产精品久久久久久久午夜片| 欧美国产日韩a欧美在线观看| 国产精品视频在线观看| 免费成人黄色| 国产伪娘ts一区| 国产精品一区二区欧美| 蜜臀91精品一区二区三区| 欧美日韩亚洲一区二区| 久久一二三四| 国产精品久久久一区二区三区| 欧美激情偷拍| 国产真实乱偷精品视频免| 一区二区三区波多野结衣在线观看| 亚洲电影免费观看高清| 亚洲欧美伊人| 一片黄亚洲嫩模|