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

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>
            亚洲激情网址| 激情另类综合| 日韩一二三在线视频播| 欧美大片va欧美在线播放| 久久综合婷婷| 最近中文字幕日韩精品| 欧美电影免费观看高清完整版 | 一区二区日韩欧美| 国产精品一二| 亚洲欧洲另类| 欧美亚洲综合网| 久久www成人_看片免费不卡| 亚洲精品一区久久久久久| 久久精品中文| 欧美成人r级一区二区三区| 国产精品一香蕉国产线看观看| 欧美一区二区三区四区在线| 亚洲精品一区二区三区婷婷月 | 蜜臀久久99精品久久久久久9| 亚洲精品网站在线播放gif| 亚洲天堂偷拍| 在线观看一区欧美| 亚洲午夜极品| 亚洲国产一区二区三区青草影视| 欧美一二三区精品| 欧美 日韩 国产精品免费观看| 国产女优一区| 亚洲高清资源| 国产亚洲欧美aaaa| 校园春色综合网| 欧美成人第一页| 在线日韩电影| 久久亚洲一区二区三区四区| 欧美精品亚洲精品| 日韩一级大片| 久久精品国产91精品亚洲| 亚洲午夜在线视频| 欧美成年人视频网站| 久久精品国产精品亚洲综合| 亚洲一区二区三区国产| 亚洲第一黄网| 欧美一区二区日韩一区二区| 亚洲婷婷综合色高清在线| 亚洲精品在线视频| 欧美经典一区二区三区| 久久久免费av| 久久久久久亚洲精品杨幂换脸| 一本色道**综合亚洲精品蜜桃冫| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲欧美日韩一区二区三区在线观看| 亚洲国产精品久久久| 蜜臀a∨国产成人精品| 国产精品日韩久久久久| 香蕉成人久久| 欧美视频不卡| 一本色道久久综合亚洲二区三区| 国产精品久99| 亚洲卡通欧美制服中文| 亚洲精品乱码久久久久久蜜桃麻豆| 久久成人综合网| 亚洲国产欧美在线| 久久综合给合久久狠狠色| 亚洲每日在线| 欧美母乳在线| 亚洲毛片在线免费观看| 一本久久精品一区二区| 欧美日韩精品在线观看| 欧美一区二区性| 国产欧美不卡| 亚洲国产精品va在看黑人| 亚洲第一精品福利| 免费成人黄色| 亚洲在线一区二区| 国产精品影视天天线| 亚洲欧美乱综合| 亚洲另类视频| 亚洲欧美激情一区| 久久久精品日韩| 亚洲国产成人精品久久久国产成人一区| 欧美激情亚洲视频| 国产精品久久久久影院色老大| 久久久久国产免费免费| 国产亚洲欧美在线| 蜜桃视频一区| 欧美影院在线| 亚洲第一中文字幕在线观看| 在线中文字幕不卡| 久久久久9999亚洲精品| 欧美日韩天天操| 免费久久99精品国产自| 9国产精品视频| 久久香蕉国产线看观看av| 午夜欧美大尺度福利影院在线看| 美女尤物久久精品| 亚洲天堂免费观看| 亚洲高清视频在线观看| 午夜精品一区二区三区在线播放| 亚洲欧洲在线一区| 欧美日韩久久精品| 久久国产精品亚洲va麻豆| 亚洲大片在线| 黑人巨大精品欧美黑白配亚洲| 亚洲深爱激情| 99精品99久久久久久宅男| 久久久夜夜夜| 久久精品国产99精品国产亚洲性色 | 久久亚洲精品视频| 久久精品国产亚洲5555| 国产精品久久久久永久免费观看 | 欧美伊人精品成人久久综合97| 亚洲福利小视频| 久久精品免费| 亚洲欧美国产精品va在线观看| 欧美精品成人一区二区在线观看| 猛干欧美女孩| 影音先锋成人资源站| 欧美一站二站| 中文精品一区二区三区| 亚洲电影中文字幕| 久久亚洲国产精品一区二区| 国产一区二区三区日韩欧美| 欧美日韩亚洲另类| 在线亚洲高清视频| 亚洲免费伊人电影在线观看av| 欧美亚日韩国产aⅴ精品中极品| 久久精品视频在线免费观看| 亚洲免费影视| 一区二区三区国产在线| 午夜免费在线观看精品视频| 在线亚洲高清视频| 日韩天堂在线视频| 欧美性jizz18性欧美| 亚洲视频在线观看网站| 亚洲精品在线看| 亚洲精品久久久蜜桃| 亚洲电影第1页| 亚洲一区二区三区高清| 一本色道久久综合亚洲精品婷婷| 欧美日韩精品一区二区| 欧美国产先锋| 欧美精品一区二区三区视频| 欧美猛交免费看| 亚洲欧洲av一区二区| 亚洲欧美国产高清va在线播| 午夜精品久久久久久| 欧美大片91| 欧美激情第4页| 亚洲欧洲在线播放| 亚洲免费av电影| 亚洲无线一线二线三线区别av| 在线午夜精品| 欧美大片在线看| 亚洲国产日韩欧美在线动漫| 午夜精彩视频在线观看不卡| 在线日韩一区二区| 91久久中文字幕| 国产精品夜夜嗨| 欧美激情1区2区3区| 欧美精品在欧美一区二区少妇| 欧美日韩另类一区| 国产日产精品一区二区三区四区的观看方式 | 欧美三级视频| 国产精品美女久久久免费| 欧美尤物巨大精品爽| 久久成人在线| 欧美二区在线| 久久久久久9| 一区二区欧美激情| 久久婷婷丁香| 亚洲摸下面视频| 亚洲三级网站| 亚洲欧美日韩精品一区二区| 久久精品亚洲热| 亚洲精美视频| 免费成人小视频| 亚洲精品亚洲人成人网| 午夜精品福利在线| 欧美高清在线一区二区| 久久精品国产99国产精品澳门| 这里只有精品视频| 久久本道综合色狠狠五月| 欧美伦理91i| 欧美高清在线精品一区| 国产精品毛片高清在线完整版| 欧美人在线视频| 欧美gay视频| 国产欧美日韩精品a在线观看| 欧美日韩在线播放三区四区| 国产视频一区欧美| 国产精品中文字幕欧美| 亚洲二区视频在线| 久久福利资源站| 日韩视频免费看| 99精品99久久久久久宅男| 亚洲精品精选| 亚洲另类自拍| 一区二区三区四区五区精品视频| 久久精品国产清高在天天线| 久久不射网站| 国产精品乱人伦中文|