2016-03-10 24 views
0

是否有人知道在Windows上使用桌面窗口管理器或與DirectX組合使用仿射變換的方法?使用DWM/DX將仿射變換應用於窗口?

想想Windows 7中的Flip3D - 如果我想在桌面上進行這樣的轉換。

澄清: 問題是關於僅啓用DWM的窗口。因此Windows> = 7

回答

-1

微軟有內built-in effects

一個2D affine transform effectdocumentation一個例子C++將是:

ComPtr<ID2D1Effect> affineTransformEffect; 
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect); 

affineTransformEffect->SetInput(0, bitmap); 

D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F(0.9f, -0.1f, 0.1f, 0.9f, 8.0f, 45.0f); 

affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix); 

m_d2dContext->BeginDraw(); 
m_d2dContext->DrawImage(affineTransformEffect.Get()); 
m_d2dContext->EndDraw(); 

哪個執行以下矩陣運算:
https://msdn.microsoft.com/dynimg/IC554554.png

+0

我所需要的不是在圖像上轉換,而是在窗口上轉換。 –

+0

這個賞金不應該被自動授予。答案與問題無關! –

+1

然而,你接受了答案...... –

-1

有一個爲Win95/XP/Win2000調用編寫的庫編輯「madotate」。這是一個開源的C++ API,用於在Windows上進行3D翻轉等。如果它還沒有適應DWM,可能不會太多。

+0

你爲什麼認爲這是一個開源的圖書館?據我所知,這是一個封閉的源碼軟件。找不到該名稱的「開放源代碼庫」的任何參考。 –

+0

我有幾年前下載的圖書館資源。讓我看看我能否找到鏈接。 – user5976242

+0

我最初是從soureforge下載的。這可能導致我假設開源。我沒有看到文件中的開源許可證。但是,您正在尋找的技術很可能在這裏。 http://www.ksky.ne.jp/~seahorse/mtate2/file/mtate20202src.lzh – user5976242