123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 |
- // PicBar.cpp: implementation of the PicBar class.
- //
- //////////////////////////////////////////////////////////////////////
- #include "stdafx.h"
- #include "YLGL.h"
- #include "PicBar.h"
- #include "ShowPic22.h"
- //////////////////////////////////////////////////////////////////////
- // Construction/Destruction
- //////////////////////////////////////////////////////////////////////
- PicBar::PicBar()
- {
- m_bShowCut = 1;
- }
- PicBar::~PicBar()
- {
- try
- {
- g_fscalex = g_fscalexbak;
- g_fscaley = g_fscaleybak;
- if (m_pImageRun)delete m_pImageRun; m_pImageRun = NULL;
- if (m_pImageStop)delete m_pImageStop; m_pImageStop = NULL;
- AfxGetApp()->WriteProfileInt(LYFZVERSION, "pictime", m_time);
- AfxGetApp()->WriteProfileInt(LYFZVERSION, "pictype", m_nType);
- }
- catch (...)
- {
- }
- }
- void PicBar::OnFSCommand(LPCTSTR command, LPCTSTR args)
- {
- }
- void PicBar::Init()
- {
- try
- {
- m_bInit = 1;
- CRect rc;
- GetClientRect(rc);
- CRgn rgn1, rgn2, rgn3;
- rgn1.CreateRectRgn(0, 0, rc.Width(), rc.Height());
- rgn2.CreateRectRgn(0, 0, 10, 10);
- rgn3.CreateEllipticRgn(0, 0, 20, 20);
- rgn2.CombineRgn(&rgn2, &rgn3, RGN_DIFF);
- rgn1.CombineRgn(&rgn1, &rgn2, RGN_DIFF);
- rgn2.DeleteObject();
- rgn3.DeleteObject();
- rgn2.CreateRectRgn(0, 40, 10, 50);
- rgn3.CreateEllipticRgn(0, 30, 20, 50);
- rgn2.CombineRgn(&rgn2, &rgn3, RGN_DIFF);
- rgn1.CombineRgn(&rgn1, &rgn2, RGN_DIFF);
- rgn2.DeleteObject();
- rgn3.DeleteObject();
- rgn2.CreateRectRgn(553 + 70, 40, 563 + 70, 50);
- rgn3.CreateEllipticRgn(543 + 70, 30, 563 + 70, 50);
- rgn2.CombineRgn(&rgn2, &rgn3, RGN_DIFF);
- rgn1.CombineRgn(&rgn1, &rgn2, RGN_DIFF);
- rgn2.DeleteObject();
- rgn3.DeleteObject();
- rgn2.CreateRectRgn(553 + 70, 0, 563 + 70, 10);
- rgn3.CreateEllipticRgn(543 + 70, 0, 563 + 70, 20);
- rgn2.CombineRgn(&rgn2, &rgn3, RGN_DIFF);
- rgn1.CombineRgn(&rgn1, &rgn2, RGN_DIFF);
- rgn2.DeleteObject();
- rgn3.DeleteObject();
- ::SetWindowRgn(m_hWnd, rgn1, 0);
- rc = m_rcarray.ElementAt(9);
- rc.bottom = rc.top + 13;
- rc.right = rc.left + 13;
- m_button1.Create("", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX | BS_FLAT, rc, this, 100);
- rc = m_rcarray.ElementAt(10);
- rc.bottom = rc.top + 13;
- rc.right = rc.left + 13;
- m_button2.Create("", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX | BS_FLAT, rc, this, 101);
- rc = m_rcarray.ElementAt(11);
- rc.bottom = rc.top + 13;
- rc.right = rc.left + 13;
- m_button3.Create("", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX | BS_FLAT, rc, this, 102);
- rc = m_rcarray.ElementAt(12);
- rc.bottom = rc.top + 13;
- rc.right = rc.left + 13;
- m_button4.Create("", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX | BS_FLAT, rc, this, 103);
- if (m_nType == 1)
- m_button1.SetCheck(1);
- else if (m_nType == 2)
- m_button2.SetCheck(1);
- else if (m_nType == 3)
- m_button3.SetCheck(1);
- else if (m_nType == 4)
- m_button4.SetCheck(1);
- DrawTimes();
- MyBmpButton2* m_btn = ((MyBmpButton2*)m_picarray.ElementAt(4));
- m_pImageRun = m_btn->m_bmp->Clone();
- LoadImageFromRes(&m_pImageStop, MAKEINTRESOURCE(IDR_JPG2), _T("JPG"));
- if (m_bShowCut == 0)
- ((MyBmpButton2*)m_picarray.ElementAt(15))->ShowWindow(0);
- }
- catch (...)
- {
- }
- }
- void PicBar::Destory()
- {
- }
- //------------------------------------------------------------
- // Remark by Jeff
- // 11个从*.lia反序列化出来的按钮事件;
- // 退出、剪裁、放大、缩小、逆时针旋转、顺时针旋转、上一张、播放幻灯片、下一张、播放速度减、播放速度加;
- //------------------------------------------------------------
- void PicBar::BtnClick(WPARAM wParam, LPARAM lParam)
- {
- int id = lParam;
- id -= 99;
- switch (id)
- {
- case 1:
- ShowWindow(SW_HIDE);
- ((ShowPic22*)m_pParent)->KillTimer(6);
- ((ShowPic22*)m_pParent)->SetTimer(6, 100, NULL);
- break;
- case 2:
- ((ShowPic22*)m_pParent)->Rotate1(); // 顺时针旋转图片;
- break;
- case 3:
- ((ShowPic22*)m_pParent)->Rotate2(); // 逆时针旋转图片;
- break;
- case 4:
- ((ShowPic22*)m_pParent)->Pre(); // 前一张;
- break;
- case 5:
- ((ShowPic22*)m_pParent)->AutoPic(); // 自动播放;
- // if(((ShowPic22*)m_pParent)->m_bauto)
- // ShowWindow(SW_HIDE);
- break;
- case 6:
- ((ShowPic22*)m_pParent)->Next(); // 后一张;
- break;
- case 7: // 播放速度减;
- m_time--;
- m_time = max(1, m_time);
- DrawTimes();
- break;
- case 8: // 播放速度减加;
- m_time++;
- m_time = min(20, m_time);
- DrawTimes();
- break;
- case 14: // 放大;
- ((ShowPic22*)m_pParent)->OnMouseWheel2(1);
- break;
- case 15: // 缩小;
- ((ShowPic22*)m_pParent)->OnMouseWheel2(0);
- break;
- case 16:
- ((ShowPic22*)m_pParent)->CutPhoto3(); // 剪裁按钮;
- break;
- }
- }
- BOOL PicBar::PreTransMsg(MSG* pMsg)
- {
- if (pMsg->message == WM_KEYDOWN)
- {
- return m_pParent->PreTranslateMessage(pMsg);
- }
- else if (pMsg->message == WM_PAINT)
- {
- // CDialog::PreTranslateMessage(pMsg);
- // DrawTimes();
- }
- else if (pMsg->message == WM_MOUSEMOVE)
- {
- m_pParent->PreTranslateMessage(pMsg);
- return CDialog::PreTranslateMessage(pMsg);
- }
- else if (pMsg->message == WM_LBUTTONDOWN)
- {
- g_bNeedDrawParent = 1;
- CPoint pt;
- ::GetCursorPos(&pt);
- ScreenToClient(&pt);
- if (m_rcarray.ElementAt(9).PtInRect(pt))
- {
- m_button1.SetCheck(!m_button1.GetCheck());
- if (m_button1.GetCheck())
- {
- m_button2.SetCheck(0);
- m_button3.SetCheck(0);
- m_button4.SetCheck(0);
- }
- EffectChange();
- return 1;
- }
- if (m_rcarray.ElementAt(10).PtInRect(pt))
- {
- m_button2.SetCheck(!m_button2.GetCheck());
- if (m_button2.GetCheck())
- {
- m_button1.SetCheck(0);
- m_button3.SetCheck(0);
- m_button4.SetCheck(0);
- }
- EffectChange();
- return 1;
- }
- if (m_rcarray.ElementAt(11).PtInRect(pt))
- {
- m_button3.SetCheck(!m_button3.GetCheck());
- if (m_button3.GetCheck())
- {
- m_button2.SetCheck(0);
- m_button1.SetCheck(0);
- m_button4.SetCheck(0);
- }
- EffectChange();
- return 1;
- }
- if (m_rcarray.ElementAt(12).PtInRect(pt))
- {
- m_button4.SetCheck(!m_button4.GetCheck());
- if (m_button4.GetCheck())
- {
- m_button2.SetCheck(0);
- m_button3.SetCheck(0);
- m_button1.SetCheck(0);
- }
- EffectChange();
- return 1;
- }
- }
- return CDialog::PreTranslateMessage(pMsg);
- }
- void PicBar::EffectChange()
- {
- if (m_button1.GetCheck())
- {
- m_nType = 1;
- ((ShowPic22*)m_pParent)->SetEffect(1);
- }
- else if (m_button2.GetCheck())
- {
- m_nType = 2;
- ((ShowPic22*)m_pParent)->SetEffect(2);
- }
- else if (m_button3.GetCheck())
- {
- m_nType = 3;
- ((ShowPic22*)m_pParent)->SetEffect(3);
- }
- else if (m_button4.GetCheck())
- {
- m_nType = 4;
- ((ShowPic22*)m_pParent)->SetEffect(4);
- }
- else
- {
- m_nType = 0;
- ((ShowPic22*)m_pParent)->SetEffect(0);
- }
- }
- void PicBar::DrawTimes()
- {
- try
- {
- Graphics graph(m_pBk);
- CRect rc = m_rcarray.ElementAt(8);
- rc.top += 2;
- rc.left += 5;
- RectF layoutRect(rc.left, rc.top, rc.Width(), rc.Height());
- CString str;
- str.Format("%d", m_time);
- int leng = str.GetLength();
- StringFormat format;
- format.SetAlignment(StringAlignmentCenter);
- SolidBrush *Brush = new SolidBrush(Color(255, 50, 55, 69));
- graph.FillRectangle(Brush, layoutRect);
- delete Brush;
- Brush = new SolidBrush(Color(255, 240, 240, 240));
- Gdiplus::Font *g_TimerFont = new Gdiplus::Font(L"宋体", 16);
- BSTR bstr = str.AllocSysString();
- graph.SetTextRenderingHint(TextRenderingHintAntiAlias);
- graph.DrawString(
- bstr,
- leng,
- g_TimerFont,
- layoutRect,
- &format,
- Brush);
- delete Brush;
- delete g_TimerFont;
- SysFreeString(bstr);
- Invalidate();
- }
- catch (...)
- {
- }
- }
- void PicBar::ChangeBtn()
- {
- try
- {
- if (m_pImageRun == NULL)return;
- MyBmpButton2* m_btn = ((MyBmpButton2*)m_picarray.ElementAt(4));
- if (((ShowPic22*)m_pParent)->m_bauto == 0)
- m_btn->ChangePic(m_pImageRun, 0, m_pImageStop, 0);
- else
- m_btn->ChangePic(m_pImageStop, 0, m_pImageRun, 0);
- }
- catch (...)
- {
- }
- }
- void PicBar::PreLoad()
- {
- g_pMainWnd->GetSkin();
- m_pParent = NULL;
- m_time = 3;
- m_nType = 1;
- m_bInit = 0;
- m_pImageRun = NULL;
- m_pImageStop = NULL;
- m_time = AfxGetApp()->GetProfileInt(LYFZVERSION, "pictime", 3);
- m_nType = AfxGetApp()->GetProfileInt(LYFZVERSION, "pictype", 1);
- g_fscalexbak = g_fscalex;
- g_fscaleybak = g_fscaley;
- g_fscalex = 1.0;
- g_fscaley = 1.0;
- // g_fscalex=(float)g_screenwid/1024.0;
- // g_fscaley=(float)g_screenhei/768.0;
- }
|