混沌雑記帳
Dannyphers:Лицензии, софт, базы к антивирусу NOD32 ESET
Henrykit:chubby anal
零:ノイキャン△
零:電源関係調達
零:.NET5コンテナの謎
零:呟き通知鯖再実装
零:見た目は変わり映えのしない時計
零:鯖空調からの脱却
零:マウス交換
零:VR(3)
零:TWS
雑多
仕事
車
PC関連
ダーツ
カメラ
モバイル
LOOX
鯖空調からの脱却
マウス交換
VR(3)
TWS
呟き通知
賢時計
VR(2)
流行りのノッチスタイル
電源は消耗品
メモリエラー
2021 年 01 月
(1)
2020 年 12 月
(2)
2020 年 11 月
(1)
2020 年 10 月
(1)
2020 年 06 月
(1)
2019 年 07 月
(1)
2019 年 06 月
(1)
2018 年 12 月
(3)
2018 年 07 月
(1)
2018 年 06 月
(1)
2017 年 10 月
(1)
2017 年 09 月
(1)
2017 年 08 月
(2)
2016 年 12 月
(1)
2016 年 11 月
(1)
2016 年 02 月
(1)
2015 年 02 月
(1)
2015 年 01 月
(1)
2014 年 08 月
(1)
2014 年 07 月
(1)
2014 年 04 月
(1)
2013 年 10 月
(1)
2013 年 04 月
(1)
2012 年 05 月
(1)
2012 年 04 月
(1)
2012 年 03 月
(1)
2012 年 02 月
(2)
2012 年 01 月
(3)
2011 年 12 月
(2)
2011 年 11 月
(1)
2011 年 10 月
(2)
2011 年 09 月
(2)
2011 年 07 月
(3)
2011 年 06 月
(3)
2011 年 05 月
(2)
2011 年 02 月
(1)
2011 年 01 月
(2)
2010 年 12 月
(2)
2010 年 11 月
(2)
2010 年 10 月
(2)
2010 年 09 月
(2)
2010 年 08 月
(1)
2010 年 07 月
(4)
2010 年 06 月
(2)
2010 年 05 月
(4)
2010 年 04 月
(2)
2010 年 03 月
(4)
2010 年 02 月
(3)
2010 年 01 月
(2)
2009 年 12 月
(4)
2009 年 11 月
(3)
2009 年 10 月
(1)
2009 年 09 月
(2)
2009 年 08 月
(2)
2009 年 07 月
(2)
2009 年 06 月
(3)
2009 年 05 月
(1)
2009 年 04 月
(2)
2009 年 03 月
(2)
2009 年 02 月
(3)
2009 年 01 月
(1)
2008 年 12 月
(3)
2008 年 11 月
(2)
2008 年 10 月
(5)
2008 年 09 月
(6)
2008 年 08 月
(1)
2008 年 07 月
(2)
2008 年 06 月
(2)
2008 年 05 月
(3)
2008 年 04 月
(1)
2008 年 03 月
(3)
2008 年 02 月
(1)
2008 年 01 月
(5)
2007 年 12 月
(4)
2007 年 11 月
(3)
2007 年 09 月
(4)
2007 年 08 月
(3)
2007 年 07 月
(5)
2007 年 06 月
(3)
2007 年 05 月
(5)
2007 年 04 月
(1)
2007 年 03 月
(4)
2007 年 02 月
(2)
2006 年 12 月
(2)
2006 年 11 月
(2)
2006 年 10 月
(1)
2006 年 09 月
(5)
2006 年 08 月
(5)
2006 年 07 月
(5)
2006 年 06 月
(6)
2006 年 05 月
(5)
2006 年 04 月
(4)
2006 年 03 月
(4)
2006 年 02 月
(7)
2006 年 01 月
(7)
半透過描画
WindowsMobileのTodayプラグイン作成で嵌ったPNG透過描画関連。
・PNGを使えば透過情報を使える。
・SHLoadImageFileはPNGを読み込める。
・AlphaBlendで透過付き描画が出来る。
よし、簡単じゃん。 と思ったら甘かった。
トラップは
・SHLoadImageFileはPNGを読み込めるが、デバイスにあわせる仕様のため16ビットになってしまう。
・AlphaBlendで必要とするのはアルファチャンネル付き32ビットビットマップ。
よってそのままじゃうまくいかない。
まあSHLoadDIBitmapって手もあるのかもしれないが、PNGのが作りやすし。
というわけでネットの海を探し回った結果。
めるもでらさんの所でやはり同じ問題にぶつかった
記事
を発見。
ちょっと変形してSHLoadImageFileと入れ替え可能な関数を作成。
HBITMAP IFLoadImageFile(const TCHAR *pszPath)
{
// interface 取得
IImagingFactory* pImageFactory= NULL;
CoCreateInstance(CLSID_ImagingFactory, NULL, CLSCTX_INPROC_SERVER,
IID_IImagingFactory, (LPVOID*)&pImageFactory);
// ファイル読み込み
IImage* pImage= NULL;
pImageFactory->CreateImageFromFile(pszPath, &pImage);
ImageInfo imgInfo;
pImage->GetImageInfo(&imgInfo);
// ビットマップの作成
bool bAlpha = (imgInfo.PixelFormat & PIXFMTFLAG_ALPHA)? TRUE: FALSE;
HDC hBmpDC = CreateCompatibleDC(NULL);
HBITMAP hBmp = CreateBitmap(imgInfo.Width, imgInfo.Height, 1, (bAlpha)? 32 :24, NULL);
SelectObject(hBmpDC, hBmp);
RECT rcBitMap = { 0, 0, imgInfo.Width, imgInfo.Height};
pImage->Draw(hBmpDC, &rcBitMap, NULL);
// 解放
pImage->Release();
pImageFactory->Release();
DeleteDC(hBmpDC);
return hBmp;
}
[143] (2009/11/10(Mon) 11:29:54)
修正
削除
投稿パス:
名前:
題名:
パスワード:
tdyRegStatus >>
<< バッチエンコ制御
Copyright © 混沌雑記帳. All Rights Reserved. [
PHPウェブログシステム3
FLEUGELz
+
ネットマニア
+ 独自改造]