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

道。道。道

安全特性不等于安全的特性

   :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理

常用鏈接

搜索

  •  

最新評論

如果是使用VB,也許這個話題是多余的,因為VB有一個圖象控件可以非常容易地實現(xiàn)各種格式的圖象顯示功能,然而對于VC卻沒有一個象樣的控件可以達(dá)到這種效果,怎么辦?經(jīng)過一段日子的研究,發(fā)現(xiàn)只需要實現(xiàn)兩步工作,就可以在VC中實現(xiàn)如同VB中一樣的gif動態(tài)效果。

本文將介紹的兩部分是IPicture接口的使用和gif的儲存格式,好象一聽到儲存格式,讀者就不想再看下去了!其實不然,這里只須用到其最基本的一部分,請讀者耐心地往下看。

一.IPicture接口

IPicture接口是一個com類,其成員函數(shù)可參見微軟的MSDN,這里只需用到以下幾個函數(shù):

get_Width 返回當(dāng)前圖像的寬度
get_Height 返回當(dāng)前圖像的高度
Render 在指定的位置、設(shè)備上下文上繪制指定的圖像

IPicture的使用不需要CoCreateInstance函數(shù),而只需要使用OleLoadPicture,鑒于此接口在許多文章雜志上均有介紹,這里略去(因為不是本文的重點)。

二.Gif儲存格式

gif儲存格式是一個非常復(fù)雜的內(nèi)容,如果要講透徹可以寫很多篇文章,慶幸的是要實現(xiàn)本文的主題只需要知道其中的一個圖象儲存結(jié)構(gòu)就可以了,這里定義該圖象結(jié)構(gòu)為gifImage:

typedef struct gifImage{ WORD logX; WORD logY; WORD width; WORD height; struct flag{ BYTE d:3; BYTE c:1; BYTE b:3; BYTE a:1; }Flag; }GifImage,*PGifImage; 在該結(jié)構(gòu)中,

logX為圖象相對于邏輯屏幕左上角的x坐標(biāo),常為0;

logY為圖象相對于邏輯屏幕左上角的y坐標(biāo),常為0;

width為圖象的寬度;

height為圖象的高度;

Flag為一個標(biāo)志,a指是否存在局域性調(diào)色板,b為存儲方式(與本主題無關(guān)),c為RGB值是否經(jīng)過排序(無關(guān)),d為調(diào)色板的大小,為3*2^(d+1);

最后想提一下,因為每副圖象都以0x2c開頭,并且0x2c前面必為0,故在儲存格式中要找到圖象的起始位置,只需查找0x2c并且前面一個值為0(具體請看下面代碼),其次,一副圖象可能儲存為多個數(shù)據(jù)塊,每個數(shù)據(jù)快都是以數(shù)據(jù)長度為起始的,這一點很重要。即其圖象儲存為:

0x2c
圖象開頭
gifImage
圖象頭結(jié)構(gòu)
BYTE Number
Number為一個跟gif壓縮有關(guān)的數(shù)字,可以不理踩。
第一副圖象的大小
?
...... 圖象存儲內(nèi)容
第二副圖象大小
?
...... ?
...... ?
...... ?
0x00 數(shù)據(jù)塊結(jié)束

好,介紹完了主要的兩大部分也該進(jìn)入今天的主題了。由于使用IPicture接口可以非常輕松地顯示gif的第一副圖畫,那么我們就是利用這一點,利用gif的圖象格式,把第二,三。。。圖畫逐一拷貝到第一副圖畫的位置,再使用IPicture進(jìn)行讀取,便可以形成一副十分連續(xù)的gif動畫了,接下來就讓我來給大家展示以下:

?1?HINSTANCE?handle?=?::AfxGetResourceHandle();//首先獲得資源句柄?
?2?HRSRC?hrsrc=?::FindResource(handle,MAKEINTRESOURCE(IDR_IMAGE2),"IMAGE");?
?3?DWORD?word?=?::SizeofResource(handle,hrsrc);?
?4?BYTE*?lpBy?=?(BYTE*)LoadResource(handle,hrsrc);//獲得圖象的首地址?
?5?BYTE*?pByte[20];?//用來儲存gif每幅圖象的地址?
?6?DWORD?nu[20];?//用來儲存每幅圖象的大小?
?7?int?num?=?0;?//用來計算有幾副圖象?
?8?DWORD?firstLocation?=?0;?//第一副圖象的位置,用來替換?
?9?for(DWORD?j=0;j<word;j++)?
10?{?
11??if(lpBy[j]==0x2c)?//圖象開頭?
12??{?
13???if(lpBy[j-1]==0x00)?//確認(rèn)是否圖象開頭?
14???{?
15????if(num==0)?
16????{?
17?????firstLocation?=?j;?//得到第一副圖象位置?
18????}?
19????PGifImage?nowImage?=?(PGifImage)&lpBy[j+1];?
20????if(nowImage->Flag.a==0)?//a為0時指圖象不存在局部調(diào)色板?
21????{?
22?????DWORD?number?=?1+sizeof(GifImage);?
23?????while(lpBy[j+number]!=0)?
24?????{?
25??????number?=?number+(DWORD)lpBy[j+number]+1;?
26?????}?//算得圖象大小?
27?????number++;?
28?????//把最后一個0x00加上?
29?????pByte[num]?=?new?BYTE[number];?
30?????for(DWORD?n=0;n<number;n++)?
31?????{?
32??????*(BYTE*)(pByte[num]+n)?=?lpBy[j+n];?
33?????}?//將圖象儲存起來。?
34?????nu[num]?=?number;?
35?????j?=?j+number-1;?//跳過圖象?
36?????num++;?
37????}?
38????else?
39????{?
40?????//當(dāng)a為1時需要加上局部調(diào)色板的大小,其他與a為0時一樣?
41?????int?number?=?1+sizeof(GifImage)+3*(int)floor(pow(2,nowImage->Flag.d));?
42?????while(lpBy[j+number]!=0)?
43?????{?
44??????number?=?number+(DWORD)lpBy[j+number]+1;?
45?????}?
46?????//算得圖象大小?
47?????number++;?
48?????//把最后一個0x00加上?
49?????pByte[num]?=?new?BYTE[number];?
50?????for(DWORD?n=0;n<number;n++)?
51?????{
52??????*(BYTE*)(pByte[num]+n)?=?lpBy[j+n];?
53?????}?
54?????//將圖象儲存起來。
55?????nu[num]?=?number;?j?=?j+number-1;?
56?????//跳過圖象?
57?????num++;?
58????}?
59???}?
60??}?
61?}?
62?int?working=?1;?
63?while(working)?
64?{?
65??for(int?m=0;m<num;m++)?
66??{?
67???CBrush?brush(RGB(255,255,255));?
68???pdc->FillRect(CRect(0,0,500,500),&brush);?
69???DWORD?DDD;?
70???VirtualProtect(lpBy,word,PAGE_READWRITE,&DDD);?
71???//修改頁面的保護(hù)屬性,以進(jìn)行寫操作?
72???for(DWORD?n=0;n<nu[m];n++)?
73???{?
74????lpBy[firstLocation+n]?=?*(BYTE*)(pByte[m]+n);?
75???}?
76???VirtualProtect(lpBy,word,DDD,NULL);?
77???//因為IPicture必須把圖象存成流的形式才能工作,所以有下面一段函數(shù)?
78???CMemFile?file(lpBy,word);?
79???CArchive?ar(&file,CArchive::load|CArchive::bNoFlushOnDelete);?
80???CArchiveStream?arcstream(&ar);?
81???CComQIPtr<IPicture>?m_picture;?
82???HRESULT?hr?=?OleLoadPicture((LPSTREAM)&arcstream,0,false,?IID_IPicture,(void**)&m_picture);?
83???long?a,b;?
84???m_picture->get_Width(&a);?
85???m_picture->get_Height(&b);?
86???CSize?sz(a,b);?
87???pdc->HIMETRICtoDP(&sz);?
88???//時OLE格式的大小轉(zhuǎn)化為正常大小?
89???CRect?rect;?
90???m_picture->Render(*pdc,0,0,sz.cx,sz.cy,0,b,a,-b,&rect);?
91???Sleep(100);?
92???//停止一段時間。?
93??}
94?}
95?
96?


結(jié)尾語:本程序最好放在一個線程中進(jìn)行工作,對于最后Sleep的毫秒數(shù)就讀者喜好進(jìn)行修改,其實gif儲存格式中有一個圖象間隔的毫秒數(shù),但是,筆者認(rèn)為在此沒有必要,還是隨讀者的喜好較好。

posted on 2006-11-18 16:40 獨孤九劍 閱讀(416) 評論(0)  編輯 收藏 引用 所屬分類: Visual C++ 8.0
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲一区二区三区免费视频| 国产精品久久波多野结衣| 亚洲婷婷在线| 久久在线视频| 欧美中文字幕第一页| 欧美精品一区二区久久婷婷| 久久精品欧美日韩| 国产精品二区在线观看| 亚洲精品国产精品国产自| 精东粉嫩av免费一区二区三区| 中文日韩电影网站| 一本色道久久综合亚洲91| 噜噜噜久久亚洲精品国产品小说| 欧美一区二区日韩| 国产精品久久久久久一区二区三区| 亚洲国产精品小视频| 在线观看日韩专区| 久久精品99久久香蕉国产色戒| 午夜精品在线| 国产精品蜜臀在线观看| 亚洲天堂偷拍| 亚洲欧美一区二区精品久久久| 欧美视频网址| 亚洲色诱最新| 欧美一区二区三区四区在线观看地址 | 这里只有精品在线播放| 日韩亚洲国产欧美| 欧美黄色一区| 亚洲精品一区二区三区樱花 | 欧美自拍偷拍| 国产欧美va欧美va香蕉在| 午夜精品亚洲一区二区三区嫩草| 欧美一级二区| 国产在线精品二区| 久久都是精品| 亚洲成人直播| 一区电影在线观看| 国产精品久久| 欧美一区深夜视频| 嫩草国产精品入口| 亚洲激情视频| 欧美色视频在线| 亚洲欧美一区二区三区久久| 久久亚洲视频| 日韩视频专区| 国产精品亚洲а∨天堂免在线| 亚洲女性裸体视频| 久久亚洲免费| 99国产精品久久久久久久| 亚洲美女网站| 亚洲另类视频| 国产精品欧美风情| 久久久久久国产精品mv| 亚洲国产毛片完整版| 亚洲一级电影| 精品不卡视频| 欧美日韩精品一区视频| 欧美一二三区精品| 亚洲国产日韩欧美在线图片| 亚洲自拍啪啪| 亚洲国产精品www| 国产精品久久久久久久久久免费| 欧美一区二区三区免费视频| 欧美激情成人在线| 欧美一级视频精品观看| 最新国产拍偷乱拍精品| 国产精品永久免费视频| 欧美顶级艳妇交换群宴| 欧美亚洲网站| 亚洲美女精品久久| 欧美+日本+国产+在线a∨观看| 一区二区三区视频在线播放| 黄色一区二区在线观看| 欧美日韩综合一区| 免费一级欧美片在线播放| 亚洲综合色丁香婷婷六月图片| 亚洲国产天堂久久综合网| 久久精品水蜜桃av综合天堂| 亚洲视频免费观看| 亚洲国产视频一区二区| 国产日韩综合一区二区性色av| 欧美日韩亚洲另类| 欧美不卡在线| 老司机一区二区三区| 羞羞视频在线观看欧美| 中国成人黄色视屏| 亚洲精品中文字幕有码专区| 免费91麻豆精品国产自产在线观看| 亚洲欧美日韩国产| 在线综合亚洲欧美在线视频| 亚洲日本中文| 亚洲国产另类久久久精品极度| 国产午夜亚洲精品理论片色戒| 国产精品久久久久久久久| 欧美日韩福利在线观看| 欧美大尺度在线| 欧美a级一区二区| 久久久久久久999| 久久精品成人一区二区三区| 午夜视黄欧洲亚洲| 亚洲综合日韩中文字幕v在线| 亚洲色诱最新| 亚洲视屏在线播放| 一区二区三区成人| 亚洲深夜福利| 亚洲一级在线| 亚洲欧美电影院| 亚洲欧美综合v| 欧美一区1区三区3区公司| 欧美一区二区免费视频| 欧美一级艳片视频免费观看| 欧美一区二粉嫩精品国产一线天| 亚欧成人精品| 久久全国免费视频| 免费在线欧美黄色| 欧美日韩精品一区二区三区四区| 欧美日韩另类国产亚洲欧美一级| 欧美视频不卡中文| 国产伦精品一区二区三区高清版| 国产精品一区二区在线| 国产一区二区丝袜高跟鞋图片| 狠狠入ady亚洲精品经典电影| 一区二区亚洲欧洲国产日韩| 亚洲激情一区| 亚洲小说欧美另类社区| 性欧美video另类hd性玩具| 久久高清一区| 亚洲电影第1页| 99精品欧美一区| 欧美一级黄色网| 欧美 日韩 国产精品免费观看| 欧美另类一区二区三区| 国产精品高潮粉嫩av| 国产主播精品在线| 亚洲精品视频在线| 亚洲欧美日韩人成在线播放| 久久人人爽国产| 亚洲精品一区二区三区婷婷月| 亚洲一区国产视频| 久久综合网络一区二区| 欧美日韩一区不卡| 国产情侣久久| 亚洲精选在线| 久久成人羞羞网站| 亚洲国产精品一区二区久 | 午夜精品久久久99热福利| 久久国产婷婷国产香蕉| 欧美国产亚洲视频| 国产视频久久| 日韩一级精品| 久久午夜电影网| 亚洲视频电影图片偷拍一区| 久久久亚洲人| 国产精品日韩一区二区| 在线观看精品| 午夜精品视频在线| 亚洲国产精品久久久| 亚洲欧美日本精品| 欧美乱大交xxxxx| 欧美日韩亚洲一区二区三区四区| 欧美激情视频给我| 亚洲免费中文| 欧美高清不卡| 伊人影院久久| 欧美在线啊v一区| 亚洲人成在线观看网站高清| 久久gogo国模啪啪人体图| 欧美日韩国内自拍| 亚洲第一视频| 久久精品国产99国产精品澳门| 亚洲精品1234| 免费在线看一区| 国内精品一区二区三区| 午夜亚洲精品| 一区二区三区福利| 欧美日韩国产大片| 亚洲毛片av在线| 欧美激情一区二区三级高清视频| 久久精品国产久精国产一老狼| 国产精一区二区三区| 亚洲女同性videos| 一本久久综合亚洲鲁鲁| 欧美精品成人一区二区在线观看| 亚洲国产成人久久| 理论片一区二区在线| 久久av一区二区三区漫画| 国产人成精品一区二区三| 欧美一级大片在线观看| 亚洲欧美久久久| 国产精品自拍小视频| 午夜精品久久久久久久蜜桃app | 午夜精品久久久久久久久久久久久 | 亚洲综合色噜噜狠狠| 国产精品久久久久一区| 亚洲一级黄色片| 亚洲视频在线观看一区| 国产乱肥老妇国产一区二| 久久av二区| 久久久xxx| 亚洲精品一区在线观看|