#pragma once #include "../stdafx.h" #include #include #pragma comment(lib,"gdiplus") using namespace Gdiplus; namespace SOUI { class AFX_EXT_CLASS SRoundImageCenter:public SWindow { SOUI_CLASS_NAME(SRoundImageCenter, L"RoundImageCenter") public: SRoundImageCenter(void); ~SRoundImageCenter(void); //˳ʱÕë½Ç¶ÈÐýת enum ROTATEANGLE { ROTATEANGLE0 = 0, ROTATEANGLE90, ROTATEANGLE180, ROTATEANGLE270, }; public: void OnPaint(IRenderTarget *pRT); /* void OnLButtonDown(UINT nFlags, SOUI::CPoint point); void OnLButtonUp(UINT nFlags, SOUI::CPoint point); void OnNcLButtonUp(UINT nFlags, SOUI::CPoint point); void OnMouseMove(UINT nFlags, SOUI::CPoint point);*/ protected: SOUI_MSG_MAP_BEGIN() MSG_WM_PAINT_EX(OnPaint) /*MSG_WM_LBUTTONDOWN(OnLButtonDown) MSG_WM_LBUTTONUP(OnLButtonUp) MSG_WM_NCLBUTTONUP(OnNcLButtonUp) MSG_WM_MOUSEMOVE(OnMouseMove)*/ SOUI_MSG_MAP_END() public: FilterLevel m_fl; //ÉèÖõľø¶Ô·¾¶¡£ void SetCenterImage(SStringT img); int GetCenterImageWidth(); int GetCenterImageHeight(); SStringT GetCenterImage(); void SetRotate(ROTATEANGLE angle); int GetCurrentK(); void SetCurrentTransferRect(int val); void MoveImage(int xpos, int ypos); void SetCurrentRect(RECT rc); RECT GetTransferRect(); void ChangedCurrentRect(RECT oldRc); CAutoRefPtr GetShowImage(int nWidth = 100, int nHeight = 100); BOOL SaveSelImage( CString strImagePath, int nWidth = 100, int nHeight = 100,CString strImageType = _T("image/png") ); private: void InitCenterUI(int w, int h); bool ImageFromIDResource(UINT nID, CString strType, Image * & pImg ,HINSTANCE hInstance); private: int GetK(int w, int h); RECT GetDestDrawRect(int k); private: Bitmap * m_pSelImage; Bitmap * m_pOrignImage; ROTATEANGLE m_angle; SStringT m_imageStr; float m_fAngle; int m_k; RECT m_currentRect; RECT m_currentTransferRect; SOUI::CPoint m_ptStart; Gdiplus::Image* m_pImgRoundMask; }; }