ページ 11

DirectXでデスクトップの画像の取得方法

Posted: 2009年11月15日(日) 01:20
by スー
こんばんわスーです。
いまDirectXとWindowsAPIを使ってスクリーンセーバーを作っています。

デスクトップの画像を表示しながら、何かをする予定です。
イメージとしてはVISTAにインストールされているバブルのスクリーンセーバーです。

それでデスクトップの画像を取得する時点で苦戦しています。
WindowsAPIではデスクトップ画像を取得することはできました。
//デスクトップの画面を取得する関数
//取得したHDCが戻り値
HDC GetDeskTop(){
	HDC Deskhdc;
	HBITMAP DeskBmp;
	HDC DeskBmphdc;

	Deskhdc = CreateDCA("DISPLAY",NULL,NULL,NULL);
	DeskBmp = CreateCompatibleBitmap(Deskhdc,wx,wy);
	DeskBmphdc = CreateCompatibleDC(Deskhdc);
	SelectObject(DeskBmphdc, DeskBmp);

	ReleaseDC(NULL,Deskhdc);
	DeleteObject(DeskBmp);
	return DeskBmphdc;
}
これで取得したHDCを、LPDIRECT3DTEXTURE9などのDirectXで使えるように変換する方法はありますか?
もしくは、DirectXの関数でデスクトップの画像を取得する関数はありますか?

皆様、どうぞよろしくお願いします。

使用環境
WindowsXP
VC++2005
DirectX SDK(March 2008)

Re:DirectXでデスクトップの画像の取得方法

Posted: 2009年11月15日(日) 03:45
by DVDM
>>スーさん
[color=gray>>これで取得したHDCを、LPDIRECT3DTEXTURE9などのDirectXで使えるように変換する方法はありますか?[/color]
デスクトップの画像をテクスチャとしてDirectXで使うという認識でいいのでしょうか・・・。
といっても、DirectXはそこまで詳しくないので変換する関数があるかどうかは解りません。


デスクトップの画像が取得出来たのであれば、その画像を一度ビットマップ等で書き出し、
それをD3DXCreateTextureFromFileEx等で読み込んでみてはいかがでしょうか。
D3DXCreateTextureFromFileExの最後の引数がLPDIRECT3DTEXTURE9型なので読み込んでこれそうな感じです。

Re:DirectXでデスクトップの画像の取得方法

Posted: 2009年11月16日(月) 00:03
by スー
DVDMさんレスありがとうございます。

確かに、ビットマップで保存して、それをDirectXで読み込めばできそうですね。
ありがとうございました。