zoukankan      html  css  js  c++  java
  • VS2010中新控件的编程------颜色按钮类和颜色对话框

    (1)      颜色按钮类和颜色对话框

    1) 颜色对话框

    MFC提供了颜色对话框类CMFCColorDialog进行颜色的选择,系统可以利用DoModal()调用,然后选择相应的颜色。

    CMFCColorDialog dlg(m_Color,0, this);

             if(dlg.DoModal()==IDOK)

             {

                       m_Color = dlg.GetColor();

                      m_ColorDlgMsg.Format(_T("%d,%d,%d"),GetRValue(m_Color),GetGValue(m_Color),GetBValue(m_Color));

                       UpdateData(FALSE);

             }

    2) 颜色按钮

    可以利用颜色按钮选择相应的颜色,具有直观,在资源中增加按钮控件,并定义为CMFCColorButton,利用该类的函数初始化。

    初始化:

             m_PickerBut.EnableAutomaticButton(_T("颜?色¦?选?择?"),RGB(255, 0, 255));

             m_PickerBut.EnableOtherButton(_T("其?它¨¹"));

             m_PickerBut.SetColor((COLORREF)-1);

             m_PickerBut.SetColumnsNumber(10);

    颜色选择,当按下按钮时,可以获得颜色值:

    COLORREFcolor = m_ColorPicker.GetColor();

             if (color == -1)

             {

                       color= m_ColorPicker.GetAutomaticColor();

             }

             m_strRGB.Format(_T("%d,%d,%d"), GetRValue(color), GetGValue(color),GetBValue(color));

    3) 颜色条控件

    在资源中加入Picture控件,建立颜色条控件的边界,然后利用此范围建立CMFCColorBar,利用CMFCColorBar的操作函数建立并设置属性。

             m_ColorBarFrame.GetClientRect(&rectColorBar);    //获取区域

             m_ColorBarFrame.MapWindowPoints(this,&rectColorBar);   //将区域映射到窗体坐标

             m_wndColorBar.SetHorzMargin(0);

             m_wndColorBar.SetVertMargin(0);

             m_wndColorBar.EnableOtherButton(_T("其?它¨¹"));

             m_wndColorBar.CreateControl(this,&rectColorBar,IDC_COLOR_BAR,5);

             m_wndColorBar.SetColor(RGB(0,0,0));

     建立鼠标单击消息并获取颜色信息

    COLORREFcolor = m_wndColorBar.GetColor();

             m_ColorBarMsg.Format(_T("%d,%d,%d"), GetRValue(color),GetGValue(color), GetBValue(color));

             UpdateData(FALSE);

    为了建立以调色板为基础的颜色条,首先需要建立调色板,在颜色条创建时利用调色板

    //调色板的建立

    #define NUM_COLOURS 64

             struct

             {

                       LOGPALETTE    LogPalette;

                       PALETTEENTRY  PalEntry[NUM_COLOURS];

             }pal;

     

             LOGPALETTE*pLogPalette = (LOGPALETTE*) &pal;

             pLogPalette->palVersion    = 0x300;

             pLogPalette->palNumEntries= (WORD) NUM_COLOURS;

     

             COLORREFcolorStart = RGB(0, 255, 255);

             COLORREFcolorFinish = RGB(255, 255, 255);

             int nShift = 6;

             for (int i = 0; i< NUM_COLOURS; i++)

             {

                       BYTEbR = (BYTE)((GetRValue(colorStart) *(NUM_COLOURS - i) + GetRValue(colorFinish)* i) >> nShift);

                       BYTEbG = (BYTE)((GetGValue(colorStart) *(NUM_COLOURS - i) + GetGValue(colorFinish)* i) >> nShift);

                       BYTEbB = (BYTE)((GetBValue(colorStart) *(NUM_COLOURS - i) + GetBValue(colorFinish)* i) >> nShift);

     

                       pLogPalette->palPalEntry[i].peRed   = bR;

                       pLogPalette->palPalEntry[i].peGreen= bG;

                       pLogPalette->palPalEntry[i].peBlue  = bB;

                       pLogPalette->palPalEntry[i].peFlags= 0;

             }

        //颜色条的创建

             m_palColorPicker.CreatePalette(pLogPalette);

             m_wndColorBar2.SetHorzMargin(0);

             m_wndColorBar2.SetVertMargin(0);

             m_ColorBarFramw2.GetClientRect(&rectColorBar);

             m_ColorBarFramw2.MapWindowPoints(this, &rectColorBar);

             m_wndColorBar2.CreateControl(this, rectColorBar, IDC_COLOR_BAR2, 8 /* columns */, &m_palColorPicker);

             m_wndColorBar2.SetColor(colorStart);

    颜色按钮的界面

  • 相关阅读:
    自定义标签的作用
    自定义标签处理器类的生命周期
    自定义标签的执行过程
    自定义标签入门案例
    JSTL核心标签库详解
    JSTL标签(核心标准库)
    动作标签
    jsp标签
    EL表达式
    JSP学习案例--,竞猜游戏
  • 原文地址:https://www.cnblogs.com/DreamRecorder/p/9272640.html
Copyright © 2011-2022 走看看