图片控件示例(11_UiPicture)

图片控件

此示例展示以下控件的使用方法:

图片控件UiPicture的使用流程

图片控件UiPicture2的使用流程

示例代码展示:

11_UiPicture.png
11_UiPicture_1.png
11_UiPicture_2.png

显示图片的不同模式:

  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;

Generated at Tue Feb 9 15:09:54 2010 for Meizu M8 SDK Documentation by  doxygen 1.6.1