源**:
源**:
1.插入乙個對話方塊的資源,刪除預設控制項,並為對話方塊建立乙個類,命名為clyricdlg;
2.在對話方塊的標頭檔案中新增gdi+相關的標頭檔案和動態庫
#define unicode
#ifndef ulong_ptr
#define ulong_ptr unsigned long*
#endif
#include "gdiplus\\includes\\gdiplus.h" modify your path
using namespace gdiplus;
#pragma comment(lib, "gdiplus\\lib\\gdiplus.lib") //modify your lib path
3.新增公有成員變數:
int m_kind;
int cx;
bool updatedisplay(int transparent=255);
hinstance hfuncinst ;
typedef bool (winapi *myfunc)(hwnd,hdc,
point*,size*,hdc,point*,colorref,blendfunction*,dword);
myfunc updatelayeredwindow;
blendfunction m_blend;
hdc m_hdcmemory;
4.新增私有成員變數:
bool m_bback;
gdiplusstartupinput gdiplusstartupinput;
ulong_ptr gdiplustoken;
5.在建構函式中初始化如下成員變數:
m_bback=false;
m_kind=cx=0;
gdiplusstartup(&gdiplustoken, &gdiplusstartupinput, null);
6.為對話方塊新增oncreate函式,並編輯**如下:
hfuncinst = loadlibrary("user32.dll");
bool bret=false;
if(hfuncinst)
updatelayeredwindow=(myfunc)getprocaddress(hfuncinst, "updatelayeredwindow");
else
// initialize gdi+.
m_blend.blendop=0; //theonlyblendopdefinedinwindows2000
m_blend.blendflags=0; //nothingelseisspecial...
m_blend.alphaformat=1; //...
m_blend.sourceconstantalpha=255;//ac_src_alpha
7.實現其成員函式updatadisplay
[cpp]view plain
copy
bool
clyricdlg::updatedisplay(
inttransparent)
; //建立2個相容dc的畫筆,graphics類在gdi+中定義
graphics graph(m_hdcmemory);
graphics graphics(m_hdcmemory);
//設定平滑模式
graphics.setsmoothingmode(smoothingmodeantialias);
graphics.setinterpolationmode(interpolationmodehighqualitybicubic);
//設定字型,fontfamily也在gdi+中定義
fontfamily fontfamily(l"arial black"
);
stringformat strformat;
//獲取系統時間
ctime time=ctime::getcurrenttime();
cstring timestr=time.format("%h-%m-%m"
);
wchar_t
pszbuf[80]=,
, },
,
};
//建立乙個畫筆的路徑
graphicspath path;
path.addstring(pszbuf[m_kind],wcslen(pszbuf[m_kind]),&fontfamily,
fontstyleregular,38,point(10,10),&strformat);
//建立一支畫筆
pen pen(color(155,215,215,215),3);
//畫筆畫出已經建立的路徑
graphics.drawpath(&pen,&path);
/*畫出字型的邊緣部分*/
for(
inti=1; i<9; i+=1)
solidbrush brush(color(25,228,228,228));
pen pen1(color(155,223,223,223));
pen pen2(color(55,223,223,223));
image image(l"1.png"
);
if(m_bback)
//畫背景和
//建立線性漸變畫刷
lineargradientbrush lingrbrush(
point(0,0),point(0,90),
color(255,255,255,255),
color(255,30,120,195));
lineargradientbrush lingrbrushw(
point(0,10),point(0,60),
color(255,255,255,255),
color(15,1,1,1));
//用線性漸變畫刷填充路徑
graphics.fillpath(&lingrbrush,&path);
graphics.fillpath(&lingrbrushw,&path);
//設定視窗的風格
dword
dwexstyle=getwindowlong(m_hwnd,gwl_exstyle);
if((dwexstyle&0x80000)!=0x80000)
setwindowlong(m_hwnd,gwl_exstyle,dwexstyle^0x80000);
//更新視窗層
size sizewindow=;
point ptsrc=;
bool
bret=false;
hdchdcscreen=::getdc (m_hwnd);
//updatelayeredwindow功能是更新乙個視窗的位置、大小、形狀、內容和透明度
bret= updatelayeredwindow( m_hwnd,hdcscreen,&ptwinpos,
&sizewindow,m_hdcmemory,&ptsrc,0,&m_blend,2);
graph.releasehdc(m_hdcmemory);
::releasedc(m_hwnd,hdcscreen);
hdcscreen=null;
::releasedc(m_hwnd,hdctemp);
hdctemp=null;
deleteobject(hbitmap);
deletedc(m_hdcmemory);
m_hdcmemory=null;
return
bret;
} 8.
新增ontimer(uint nidevent)訊息響應函式,編輯**如下:
cx+=1;
if(cx>20)
if(m_kind>3)
m_kind=0;
9.編輯oninitdialog()函式
// todo: add extra initialization here
updatedisplay();
settimer(1,50,null);
MFC用GDI 動感歌詞的製作
源 源 1.插入乙個對話方塊的資源,刪除預設控制項,並為對話方塊建立乙個類,命名為clyricdlg 2.在對話方塊的標頭檔案中新增gdi 相關的標頭檔案和動態庫 define unicode ifndef ulong ptr define ulong ptr unsigned long endif...
用MFC製作程式啟動logo
完了,這次土鱉了,介紹個非常過時的東西,其實就是自己收藏一下,怕以後想用的時候自己忘了。直接進入正題,首先用ps等工具做乙個自己喜歡的程式啟動的logo點陣圖,我這裡製作的logo大小為500 313,比例為 比例,看上去很舒服。新建mfc工程,把製作好的logo點陣圖新增的資源中去,資源id號設定...
利用FLASH MX製作動感的水中倒影
讓一幅普通的變成酷炫的,具有水中倒影效果的動畫,是每個動畫愛好者的心願,製作方法有很多種,今天本教程是教大家如何利用flash mx來製作動感的水中倒影動畫。好,我們開始!開啟flashmx,按ctrl n新建乙個文件,檔案 匯入 匯入一張汽車,如圖。按f8開啟如圖面板,將匯入的轉換成 car 元件...