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

l

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

windows動(dòng)畫(huà)窗體。

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



效果類似常見(jiàn)的QQ寵物、360精靈之類的。

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

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

   既然不能通過(guò)SetWindowRGN,那還能怎么做呢?其實(shí)windows自身已經(jīng)給了我們一個(gè)
處理這種位圖窗口的API,而且還可以實(shí)現(xiàn)透明,一說(shuō)到透明很多人都應(yīng)該知道是那個(gè)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í)這個(gè)函數(shù)在以前也經(jīng)常用到,但主要是用它來(lái)實(shí)現(xiàn)透明,根本沒(méi)想到它還可以實(shí)現(xiàn)不規(guī)則窗體。
看了MSDN你應(yīng)該知道了吧,其實(shí)通過(guò)設(shè)置第二個(gè)顏色屬性便可過(guò)濾掉窗體中指定的某種顏色,達(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ī)則窗體后剩下的就簡(jiǎn)單了,在此我用的一半游戲中的(4*4)行走圖做的。
只需要在繪制的時(shí)候通過(guò)改變繪制區(qū)域坐標(biāo)來(lái)控制顯示的位置達(dá)到動(dòng)畫(huà)的效果。
其中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)移動(dòng)窗口
     
*/

    UINT OnNcHitTest(CPoint point)
    
{
        
return HTCAPTION;
    }


    
/**
     * 更新動(dòng)畫(huà)
     
*/

    
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é)束,雖然沒(méi)啥技術(shù)含量,但也可以打發(fā)下無(wú)聊的時(shí)間。
以后有好玩的東西我也會(huì)更新在此。



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

評(píng)論

# re: windows動(dòng)畫(huà)窗體。  回復(fù)  更多評(píng)論   

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

# re: windows動(dòng)畫(huà)窗體。  回復(fù)  更多評(píng)論   

不錯(cuò),感謝,收藏,原來(lái)qq寵物是這樣弄的啊,之前以為很神奇

# re: windows動(dòng)畫(huà)窗體。  回復(fù)  更多評(píng)論   

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

# re: windows動(dòng)畫(huà)窗體。  回復(fù)  更多評(píng)論   

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

# re: windows動(dòng)畫(huà)窗體。  回復(fù)  更多評(píng)論   

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

# re: windows動(dòng)畫(huà)窗體。  回復(fù)  更多評(píng)論   

不錯(cuò) 收藏了 以后關(guān)注你
2011-10-17 13:06 | 無(wú)賴熊貓
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            最新成人在线| 亚洲另类春色国产| 国内外成人免费激情在线视频网站| 亚洲免费观看高清完整版在线观看| 久久综合九色综合久99| 欧美一区二区三区男人的天堂| 国产精品久久一区二区三区| 亚洲一区二区三区成人在线视频精品| 亚洲区一区二| 免费日韩成人| 亚洲日本中文字幕区 | 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 亚洲国产片色| 美女91精品| 久久久91精品国产| 国外成人在线视频| 美女性感视频久久久| 久久久www成人免费精品| 亚洲第一二三四五区| 性欧美xxxx视频在线观看| 日韩视频在线免费观看| 欧美日韩一区二区在线| 99这里只有久久精品视频| 亚洲精品国产精品乱码不99| 欧美国产视频在线观看| 亚洲毛片在线看| 99精品欧美一区二区三区综合在线| 欧美日韩三级| 欧美一区二区大片| 久久黄色级2电影| 亚洲国产精品一区制服丝袜 | 香蕉乱码成人久久天堂爱免费| 一区二区欧美激情| 欧美少妇一区二区| 欧美影片第一页| 久久视频精品在线| 这里只有精品电影| 亚洲欧美另类国产| 在线看一区二区| 99av国产精品欲麻豆| 国产视频欧美| 亚洲电影自拍| 国产精品a久久久久久| 久久久精品日韩| 欧美久久久久久久久| 欧美一区高清| 欧美久久电影| 狂野欧美激情性xxxx欧美| 欧美日韩精品免费看| 久久av在线看| 欧美精品在线极品| 久久精品一本| 欧美性jizz18性欧美| 久热综合在线亚洲精品| 欧美日韩国产高清视频| 久久在线免费观看| 欧美四级剧情无删版影片| 久久伊伊香蕉| 国产女主播一区二区| 亚洲高清资源综合久久精品| 国产日韩欧美高清免费| 亚洲精品欧美日韩| 伊人久久大香线| 亚洲一区二区三区乱码aⅴ蜜桃女| 激情文学综合丁香| 亚洲在线视频免费观看| 99热精品在线| 免费视频亚洲| 蜜臀91精品一区二区三区| 国产精品毛片| 亚洲精品系列| 亚洲日韩欧美视频| 久久婷婷成人综合色| 欧美一区二区久久久| 欧美精品在线观看一区二区| 欧美 日韩 国产在线| 国产一区二区三区奇米久涩| 国产精品99久久久久久久久| 99国产成+人+综合+亚洲欧美| 久久久综合网站| 久久精品国产亚洲aⅴ| 亚洲成色www8888| 欧美一区影院| 欧美一区二区三区视频在线观看 | 久久久久久综合| 亚洲欧美bt| 欧美色中文字幕| 一级日韩一区在线观看| 一本久久a久久免费精品不卡| 久久亚洲午夜电影| 欧美成人国产| 亚洲三级影院| 欧美精品午夜视频| 亚洲精品免费在线| 99国产精品久久久久老师| 欧美激情精品久久久久| 亚洲精品久久| 亚洲一区二区三区精品在线观看| 欧美色区777第一页| 亚洲视频在线看| 久久xxxx精品视频| 伊人久久久大香线蕉综合直播| 久久婷婷国产综合精品青草| 欧美高清视频一区二区三区在线观看| 亚洲国产精品视频一区| 欧美激情精品久久久久久变态| 亚洲欧洲一区二区在线观看| 亚洲视频欧美视频| 国产精品欧美日韩一区二区| 亚洲欧美中文在线视频| 久久久亚洲综合| 亚洲精品乱码| 国产精品劲爆视频| 久久都是精品| 亚洲激情第一页| 先锋影音国产一区| 激情成人在线视频| 欧美另类极品videosbest最新版本| 99v久久综合狠狠综合久久| 欧美一区二区三区免费观看视频| 亚洲在线观看免费视频| 久久综合九色九九| 一区二区免费在线播放| 国产精品色在线| 美女精品一区| 亚洲综合日韩在线| 欧美激情偷拍| 欧美一区二视频| 亚洲裸体视频| 国产一区二区欧美| 欧美人与禽性xxxxx杂性| 亚洲欧美激情诱惑| 亚洲国产日韩综合一区| 欧美亚洲一区| 亚洲精品美女在线观看| 国产欧美日韩免费看aⅴ视频| 猛干欧美女孩| 欧美一级久久久| 日韩一级大片| 欧美激情一区二区三区在线视频观看 | 久久亚洲私人国产精品va| 一个色综合导航| 亚洲国产免费| 久久午夜视频| 午夜欧美精品久久久久久久| 亚洲欧洲日本mm| 欧美国产日韩免费| 99精品视频免费观看| 国产精品亚洲一区二区三区在线| 久久全球大尺度高清视频| 亚洲一区二区三区四区在线观看 | 欧美日韩理论| 美女黄网久久| 久久久人人人| 欧美主播一区二区三区| 亚洲一区中文| 在线一区二区视频| 亚洲日韩欧美视频一区| 欧美顶级少妇做爰| 国产精品久久波多野结衣| 欧美激情视频一区二区三区在线播放| 久久精品国产亚洲a| 欧美一区二区日韩一区二区| 99国产精品国产精品久久| 亚洲福利在线看| 欧美成人性网| 麻豆成人综合网| 久久在线免费观看| 久久夜色精品| 久久五月激情| 久久久久综合一区二区三区| 欧美在线视频a| 久久成人久久爱| 久久久久国产精品www| 久久精品综合一区| 久久久久久97三级| 久久精品天堂| 久久三级视频| 欧美成人影音| 亚洲人成7777| 99精品国产高清一区二区| 日韩视频在线永久播放| 99国产一区| 亚洲免费视频一区二区| 午夜精品久久久久久久99热浪潮 | 亚洲国产中文字幕在线观看| 伊人久久久大香线蕉综合直播| 一区二区亚洲| 亚洲日本理论电影| 中文精品视频| 亚洲欧美怡红院| 性欧美超级视频| 久久九九热免费视频| 美日韩免费视频| 欧美精品免费观看二区| 国产精品成人v| 国产亚洲精品自拍| 在线看成人片| 亚洲视频一区| 久久久久久久成人|