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

l

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

windows動畫窗體。

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



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

不說廢話了,還是說重點(diǎn)。

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

   既然不能通過SetWindowRGN,那還能怎么做呢?其實(shí)windows自身已經(jīng)給了我們一個
處理這種位圖窗口的API,而且還可以實(shí)現(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í)這個函數(shù)在以前也經(jīng)常用到,但主要是用它來實(shí)現(xiàn)透明,根本沒想到它還可以實(shí)現(xiàn)不規(guī)則窗體。
看了MSDN你應(yīng)該知道了吧,其實(shí)通過設(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)行走圖做的。
只需要在繪制的時(shí)候通過改變繪制區(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)前橫向第幾幀 和 縱向的第幾幀

 /**
     * 實(shí)現(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ā)下無聊的時(shí)間。
以后有好玩的東西我也會更新在此。



posted on 2011-10-16 00:22 l1989 閱讀(3123) 評論(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
這還真沒研究過~
其實(shí)除了窗體裁剪 動畫的實(shí)現(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 | 無賴熊貓

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲日本va在线观看| 一本色道久久综合| 麻豆视频一区二区| 在线亚洲观看| 欧美国产一区二区在线观看| 国语自产精品视频在线看8查询8| 亚洲午夜激情网站| 亚洲毛片在线看| 免费久久精品视频| 在线观看成人小视频| 久久青青草原一区二区| 在线观看欧美| 99在线热播精品免费| 欧美涩涩视频| 在线观看欧美成人| 欧美在线免费| 亚洲欧美日韩国产一区| 国产精品青草久久| 中文成人激情娱乐网| 亚洲欧洲三级电影| 奶水喷射视频一区| 亚洲国产精品国自产拍av秋霞| 久久久欧美一区二区| 久久亚洲综合色一区二区三区| 久久精品亚洲一区二区| 久久精品成人一区二区三区蜜臀| 亚洲综合不卡| 国产精品一区在线观看| 亚洲小说欧美另类社区| 欧美在线一级视频| 狠狠综合久久av一区二区小说| 久久精品国产亚洲a| 欧美成人精精品一区二区频| 亚洲国产精品久久久久| 欧美成人免费播放| 亚洲免费av网站| 亚洲欧美另类国产| 狠狠色丁香久久综合频道| 久久综合九色综合欧美狠狠| 欧美激情精品久久久久久黑人| 亚洲精品视频在线播放| 欧美无乱码久久久免费午夜一区| 亚洲欧美在线看| 久久久综合网| 亚洲国产小视频在线观看| 欧美乱在线观看| 亚洲嫩草精品久久| 免费成人激情视频| 一本色道精品久久一区二区三区 | 亚洲一区二区精品视频| 国产精品久久一级| 欧美一区永久视频免费观看| 欧美黄色成人网| 亚洲破处大片| 亚洲视频一区二区免费在线观看| 亚洲综合导航| 一区二区三区视频免费在线观看 | 精品成人一区二区三区| 欧美第十八页| 亚洲欧美电影在线观看| 欧美国产日韩二区| 亚洲欧美另类在线| 亚洲人成网站色ww在线| 国产女人aaa级久久久级| 欧美成人自拍| 欧美一区二区三区啪啪| 亚洲免费av观看| 麻豆国产va免费精品高清在线| 亚洲一区二区在线视频| 国产精品一区二区你懂的| 日韩一级在线| 美女视频网站黄色亚洲| 一区二区三区免费在线观看| 国产亚洲精品一区二555| 欧美日本高清视频| 玖玖玖免费嫩草在线影院一区| 亚洲一区二区三区中文字幕| 亚洲高清在线播放| 久久久久九九九| 在线亚洲激情| aa级大片欧美| 欧美成人按摩| 裸体丰满少妇做受久久99精品| 国产精品久久国产三级国电话系列| 国内精品视频在线播放| 羞羞漫画18久久大片| 亚洲精品偷拍| 麻豆成人综合网| 久久精品中文字幕一区| 国产精品免费aⅴ片在线观看| 亚洲国产一区二区三区高清| 亚洲国产成人精品久久久国产成人一区| 亚洲影音一区| 午夜一级久久| 国产精品久久久久久模特| 亚洲日本中文字幕区| 亚洲日韩成人| 欧美刺激性大交免费视频| 欧美丰满高潮xxxx喷水动漫| 精品成人a区在线观看| 亚洲欧美亚洲| 久久久.com| 国产视频一区三区| 午夜精品久久久久久| 亚洲自拍啪啪| 亚洲高清在线精品| 亚洲国产精品黑人久久久| 久久夜色精品国产| 免费日韩一区二区| 亚洲国产精品久久久久秋霞蜜臀| 久久伊人精品天天| 亚洲国产乱码最新视频 | 欧美一区三区三区高中清蜜桃| 国产精品wwwwww| 亚洲精品在线观| 亚洲性感激情| 欧美视频在线观看视频极品| 国产精品99久久久久久人| 亚洲欧美日韩中文播放| 国产女优一区| 久久久久综合网| 韩国免费一区| 欧美不卡福利| 99在线精品观看| 午夜精品www| 国产日韩亚洲欧美精品| 久久精品夜夜夜夜久久| 亚洲高清成人| 亚洲欧洲av一区二区| 国内精品久久久久久影视8| 男人的天堂亚洲在线| 日韩视频免费在线| 久久久www成人免费无遮挡大片 | 在线一区二区三区做爰视频网站| 一区二区欧美精品| 国产手机视频精品| 久久蜜桃香蕉精品一区二区三区| 欧美激情在线有限公司| 亚洲综合激情| 国一区二区在线观看| 欧美国产日本在线| 一本色道久久综合| 欧美jizzhd精品欧美巨大免费| 一本色道精品久久一区二区三区 | 欧美电影在线播放| 亚洲免费在线电影| 亚洲成色777777女色窝| 亚洲一区二区三区久久| 在线视频观看日韩| 欧美视频在线播放| 久久久久久一区二区三区| 夜夜精品视频一区二区| 久久噜噜噜精品国产亚洲综合| 99re6这里只有精品| 国产婷婷成人久久av免费高清| 久久综合狠狠综合久久激情| 亚洲欧美另类在线| 99精品视频一区| 欧美国产在线观看| 久久久久国产精品一区三寸 | 亚洲国产裸拍裸体视频在线观看乱了中文| 中文国产成人精品久久一| 在线观看视频日韩| 国产日韩欧美在线| 欧美图区在线视频| 欧美刺激午夜性久久久久久久| 午夜久久久久久| 亚洲激情电影中文字幕| 国模私拍视频一区| 国产人成一区二区三区影院| 国产精品99一区| 欧美日韩高清不卡| 欧美激情第二页| 免费欧美在线视频| 久久久人成影片一区二区三区观看| 亚洲自拍偷拍色片视频| 一区电影在线观看| 一本大道久久a久久精二百| 欧美成人精品在线播放| 久久久久久久久伊人| 久久不射中文字幕| 久久riav二区三区| 欧美中文字幕视频| 久久国产66| 久久精品久久99精品久久| 久久精品日产第一区二区| 久久精品欧美日韩精品| 久久理论片午夜琪琪电影网| 狂野欧美激情性xxxx| 免费亚洲电影| 亚洲国产精品久久| 亚洲精品一区二区三区不| 日韩视频在线播放| 亚洲无人区一区| 亚洲欧美视频在线观看| 久久久久久夜精品精品免费| 欧美freesex交免费视频| 欧美另类videos死尸| 国产精品v亚洲精品v日韩精品 | 欧美性开放视频|