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

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>
            欧美在线观看视频一区二区| 亚洲综合电影| 亚洲欧洲另类| 欧美国产日韩一区| 久久久久久色| 亚洲伦理在线观看| 亚洲精品日韩精品| 国产一区二区三区免费观看| 国产亚洲aⅴaaaaaa毛片| 亚洲电影免费观看高清完整版| 国产日韩在线视频| 欧美大学生性色视频| 伊人久久大香线蕉av超碰演员| 先锋影音国产精品| 亚洲乱码国产乱码精品精98午夜| 午夜精品视频在线| 久热精品视频在线免费观看| 亚洲欧美日韩在线综合| 亚洲男同1069视频| 影音先锋中文字幕一区| 久久高清国产| 亚洲七七久久综合桃花剧情介绍| 国产精品视频九色porn| 久久只精品国产| 久久久亚洲精品一区二区三区 | 久久精品国产清高在天天线| 欧美午夜不卡| 亚洲午夜久久久久久尤物| 亚洲精品日韩在线观看| 国产精品天天摸av网| 久久精品国产亚洲aⅴ| 激情一区二区三区| 国产精品国产| 99精品免费视频| 99国内精品久久| 狠狠干狠狠久久| 国产精品久久久久国产a级| 欧美一区二区视频在线观看2020| 欧美性一二三区| 久久亚洲高清| 欧美电影免费| 亚洲人成免费| 黑人巨大精品欧美黑白配亚洲| 亚洲在线观看免费视频| 亚洲一区二区三区色| 香蕉久久一区二区不卡无毒影院| 欧美国产精品v| 国产一区二区在线观看免费| 亚洲国内精品在线| 性做久久久久久免费观看欧美| 亚洲另类视频| 好吊日精品视频| 欧美日韩亚洲激情| 欧美极品欧美精品欧美视频| 久久久久成人精品免费播放动漫| 亚洲视频在线观看视频| 欧美高清在线播放| 亚洲欧美日韩在线高清直播| 中文日韩欧美| 亚洲国产精品免费| 亚洲精品在线视频| 欧美三级午夜理伦三级中视频| 欧美精品电影| 久久最新视频| 久久久不卡网国产精品一区| 欧美视频在线观看视频极品| 久久av资源网| 欧美成人免费小视频| 99精品视频一区| 性久久久久久久久| 最新日韩欧美| 亚洲丰满少妇videoshd| 亚洲国产成人高清精品| 欧美日韩三区| 免费高清在线视频一区·| 欧美va天堂| 亚洲男同1069视频| 欧美jizzhd精品欧美巨大免费| 久久精品成人| 久久精品伊人| 精品成人一区| 亚洲精品三级| 国产精品久久久久久亚洲毛片| 亚洲免费影视第一页| 一区二区三区高清在线| 欧美激情在线免费观看| 国产综合久久久久影院| 麻豆freexxxx性91精品| 一区二区激情| 日韩天天综合| 久久国产日韩欧美| 亚洲一区一卡| 欧美中在线观看| 亚洲精品日韩一| 麻豆精品视频在线| 久久国产精品久久久| 欧美电影在线免费观看网站| 久久狠狠久久综合桃花| 国产精品免费一区二区三区在线观看| 久久精品一区| 国产一区二区三区精品久久久| 日韩亚洲欧美一区| 最新国产乱人伦偷精品免费网站 | 羞羞漫画18久久大片| 国产精品高潮呻吟| 农村妇女精品| 国产欧美在线视频| 亚洲午夜久久久久久久久电影网| 一区二区三区三区在线| 欧美精品不卡| 亚洲免费成人av| 一区二区免费在线视频| 国产精品国产三级国产aⅴ9色| 亚洲女女女同性video| 欧美在线视频观看| 亚洲第一区色| 一区二区国产精品| 欧美一区二区三区另类 | 亚洲午夜视频在线观看| 国产一区白浆| 欧美日韩高清在线一区| 国产九九精品视频| 欧美高清视频在线| 亚洲综合清纯丝袜自拍| 亚洲精品一线二线三线无人区| 蜜臀91精品一区二区三区| 久久精品论坛| 久久一日本道色综合久久| 欧美高清成人| 久久久久久久久蜜桃| 欧美日本三级| 亚洲精品一区中文| 在线视频国产日韩| 欧美一区二区三区视频免费播放| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久久久在线观看| 狼人天天伊人久久| 国产一区二区久久久| 中文成人激情娱乐网| 一本久久a久久精品亚洲| 欧美精品免费在线观看| 亚洲人永久免费| 狠狠色丁香久久婷婷综合丁香| 亚洲女同同性videoxma| 欧美一级视频| 国产精品乱码一区二区三区| 亚洲五月婷婷| 久久精品一区| 久久精品一本| 久久国产精品一区二区| 欧美色视频一区| 99视频精品全部免费在线| 日韩午夜在线视频| 欧美成人午夜| 亚洲经典一区| 99精品国产在热久久| 欧美成黄导航| 亚洲精品一区二区三区婷婷月 | 亚洲精品乱码久久久久久蜜桃麻豆| 久久免费视频一区| 欧美电影免费观看高清| 91久久精品国产91性色tv| 欧美电影在线播放| 99re6这里只有精品视频在线观看| 亚洲欧美精品在线| 国产永久精品大片wwwapp| 久久视频在线看| 亚洲国产色一区| 亚洲一二三区视频在线观看| 国产欧美日韩综合一区在线观看 | 国产女人水真多18毛片18精品视频| 99视频精品| 裸体素人女欧美日韩| 亚洲巨乳在线| 国产精品v欧美精品∨日韩| 欧美一区二区三区男人的天堂| 久久夜色撩人精品| 一区二区激情| 狠狠噜噜久久| 欧美图区在线视频| 可以看av的网站久久看| 日韩视频在线你懂得| 久久免费精品视频| 亚洲品质自拍| 国产精品任我爽爆在线播放| 久久乐国产精品| 亚洲视频综合在线| 亚洲另类视频| 欧美成年人视频网站| 久久成人综合网| 一二三四社区欧美黄| 在线精品视频免费观看| 国产精品久久一卡二卡| 欧美www视频| 欧美一区二区三区婷婷月色| 亚洲精品美女91| 欧美91视频| 久久精品系列| 性色一区二区| 亚洲视频一区二区|