图片控件
此示例展示以下控件的使用方法:
图片控件UiPicture的使用流程
UiPicture m_Picture;
m_Picture.SetID(MZ_IDC_PICTURE1); m_Picture.SetPos(0,0,GetWidth(),GetHeight()-MZM_HEIGHT_TEXT_TOOLBAR); //设置图片的显示模式,不同模式说明参见DrawHelper.h m_Picture.SetPaintMode( MZ_PAINTMODE_NORMAL); //从资源加载图片,图片资源如何加载参见编程指南 m_Picture.LoadImage(MzGetInstanceHandle(),RT_RCDATA,MAKEINTRESOURCE(IDR_JPG_PIC1));
//先无效控件区域 m_Picture.Invalidate(); //更新控件 m_Picture.Update();
图片控件UiPicture2的使用流程
//要使用UiPicture2控件必须要使用ImagingHelper加载图片 ImagingHelper m_ImgHelper; UiPicture2 m_Picture2;
m_Picture2.SetID(MZ_IDC_PICTURE2); m_Picture2.SetPos(0,0,GetWidth(),GetHeight()-MZM_HEIGHT_TEXT_TOOLBAR); m_Picture2.SetPaintMode(MZ_PAINTMODE_NORMAL); //使用ImagingHelper加载,资源是已定义过的 m_ImgHelper->LoadImageFromRes(MzGetInstanceHandle(), RT_RCDATA, MAKEINTRESOURCE(IDR_JPG_PIC2), true, true); //设置图片 m_Picture2.SetImage(m_ImgHelper);
示例代码展示:
显示图片的不同模式:
static DWORD modeId[4]= { MZ_PAINTMODE_NORMAL, //正常显示 MZ_PAINTMODE_TILE, //平铺 MZ_PAINTMODE_STRETCH_H, //水平方向拉伸 (不设置边距) MZ_PAINTMODE_STRETCH_H //水平方向拉伸 (设置边距) };
两种读取图片的方式:
UiPicture m_Picture; m_Picture.LoadImage(MzGetInstanceHandle(),RT_RCDATA,MAKEINTRESOURCE(IDR_JPG_PIC1)); UiPicture2 m_Picture2; m_ImgHelper = new ImagingHelper; m_ImgHelper->LoadImageFromRes(MzGetInstanceHandle(), RT_RCDATA, MAKEINTRESOURCE(IDR_JPG_PIC2), true, true);
切换图片:
if (wcscmp(m_Toolbar.GetButtonText(1),L"Demo2") == 0) { m_Toolbar.SetButton(1,true,true,L"Demo1"); RemoveUiWin(&m_Picture); AddUiWin(&m_Picture2); } else if (wcscmp(m_Toolbar.GetButtonText(1),L"Demo1") == 0) { m_Toolbar.SetButton(1,true,true,L"Demo2"); RemoveUiWin(&m_Picture2); AddUiWin(&m_Picture); } Invalidate(); UpdateWindow();
/************************************************************************/ /* * Copyright (C) Meizu Technology Corporation Zhuhai China * All rights reserved. * 中国珠海, 魅族科技有限公司, 版权所有. * * This file is a part of the Meizu Foundation Classes library. * Author: Lynn * Create on: 2009-4-25 */ /************************************************************************/ //请按照以步骤运行此实例代码: //首先, 打开VS2005/2008创建一个Win 32智能设备项目 //在项目向导中选择M8SDK, 并勾选空项目 //然后,在项目中新建一个cpp文件,将此处代码拷贝到cpp文件中 //最后,按照M8SDK的帮助文档,配置项目属性 //现在,可以运行此程序了 #include <mzfc_inc.h> #include "resource.h" #define MZ_IDC_PICTURE1 100 #define MZ_IDC_PICTURE2 101 #define MZ_IDC_TOOLBAR 102 //此代码演示了: //创建和初始化应用程序 //创建和初始化窗体 //分别使用UiPicture和UiPicture2控件展示图片 //展示了同一张图片的不同显示模式 //使用UiToolbar_Text //显示图片的不同模式 static DWORD modeId[4]= { MZ_PAINTMODE_NORMAL, //正常显示 MZ_PAINTMODE_TILE, //平铺 MZ_PAINTMODE_STRETCH_H, //水平方向拉伸 (不设置边距) MZ_PAINTMODE_STRETCH_H //水平方向拉伸 (设置边距) }; class CSampleWnd_Picture : public CMzWndEx { public: UiPicture m_Picture; UiPicture2 m_Picture2; ImagingHelper* m_ImgHelper; UiToolbar_Text m_Toolbar; int m_modeIndex; protected: virtual BOOL OnInitDialog() { if (!CMzWndEx::OnInitDialog()) { return FALSE; } //设置控件m_Picture的属性,加载图片 m_modeIndex = 0; m_Picture.SetID(MZ_IDC_PICTURE1); m_Picture.SetPos(0,0,GetWidth(),GetHeight()-MZM_HEIGHT_TEXT_TOOLBAR); m_Picture.SetPaintMode(modeId[m_modeIndex]); m_Picture.LoadImage(MzGetInstanceHandle(), RT_RCDATA, MAKEINTRESOURCE(IDR_JPG_PIC1)); AddUiWin(&m_Picture); //设置控件m_Picture2的属性,使用ImagingHelper加载图片 m_Picture2.SetID(MZ_IDC_PICTURE2); m_Picture2.SetPos(0,0,GetWidth(),GetHeight()-MZM_HEIGHT_TEXT_TOOLBAR); m_Picture2.SetPaintMode(modeId[m_modeIndex]); m_ImgHelper = new ImagingHelper; m_ImgHelper->LoadImageFromRes(MzGetInstanceHandle(), RT_RCDATA, MAKEINTRESOURCE(IDR_JPG_PIC2), true, true); m_Picture2.SetImage(m_ImgHelper); m_Toolbar.SetID(MZ_IDC_TOOLBAR); m_Toolbar.SetPos(0,GetHeight()-MZM_HEIGHT_TEXT_TOOLBAR,GetWidth(),MZM_HEIGHT_TEXT_TOOLBAR); m_Toolbar.SetButton(0,true,true,L"上一张"); m_Toolbar.SetButton(1,true,true,L"Demo2"); m_Toolbar.SetButton(2,true,true,L"下一张"); AddUiWin(&m_Toolbar); return TRUE; } virtual void OnMzCommand(WPARAM wParam, LPARAM lParam) { switch(LOWORD(wParam)) { case MZ_IDC_TOOLBAR: { switch(lParam) { case 0: { //点击上一张 m_modeIndex = (m_modeIndex-1+4)%4; int iEdge; if (m_modeIndex == 3) iEdge = 80; else iEdge = 0; if (wcscmp(m_Toolbar.GetButtonText(1),L"Demo2") == 0) { m_Picture.SetEdge_Left(iEdge); m_Picture.SetEdge_Right(iEdge); m_Picture.SetPaintMode(modeId[m_modeIndex]); m_Picture.Invalidate(); m_Picture.Update(); } else if (wcscmp(m_Toolbar.GetButtonText(1),L"Demo1") == 0) { //设置边距80 m_Picture2.SetEdge_Left(iEdge); m_Picture2.SetEdge_Right(iEdge); m_Picture2.SetPaintMode(modeId[m_modeIndex]); m_Picture2.Invalidate(); m_Picture2.Update(); } } break; case 1: { //切换图片。Demo1使用控件UiPicture, Demo2使用控件UiPicture2 if (wcscmp(m_Toolbar.GetButtonText(1),L"Demo2") == 0) { m_Toolbar.SetButton(1,true,true,L"Demo1"); RemoveUiWin(&m_Picture); AddUiWin(&m_Picture2); } else if (wcscmp(m_Toolbar.GetButtonText(1),L"Demo1") == 0) { m_Toolbar.SetButton(1,true,true,L"Demo2"); RemoveUiWin(&m_Picture2); AddUiWin(&m_Picture); } Invalidate(); UpdateWindow(); } break; case 2: { //点击下一张 m_modeIndex = (m_modeIndex+1+4)%4; int iEdge; if (m_modeIndex == 3) iEdge = 80; else iEdge = 0; if (wcscmp(m_Toolbar.GetButtonText(1),L"Demo2") == 0) { m_Picture.SetEdge_Left(iEdge); m_Picture.SetEdge_Right(iEdge); m_Picture.SetPaintMode(modeId[m_modeIndex]); m_Picture.Invalidate(); m_Picture.Update(); } else if (wcscmp(m_Toolbar.GetButtonText(1),L"Demo1") == 0) { m_Picture2.SetEdge_Left(iEdge); m_Picture2.SetEdge_Right(iEdge); m_Picture2.SetPaintMode(modeId[m_modeIndex]); m_Picture2.Invalidate(); m_Picture2.Update(); } } break; } } break; } } }; class CSampleApp: public CMzApp { public: //主窗体 CSampleWnd_Picture m_MainWnd; //初始化应用程序 virtual BOOL Init() { CoInitializeEx(0, COINIT_MULTITHREADED); // 创建主窗体 RECT rcWork = MzGetWorkArea(); m_MainWnd.Create(rcWork.left,rcWork.top,RECT_WIDTH(rcWork),RECT_HEIGHT(rcWork), 0, 0, 0); m_MainWnd.SetBgColor(MzGetThemeColor(TCI_WINDOW_BG)); m_MainWnd.Show(); return TRUE; } }; // 全局应用程序变量 CSampleApp theApp;