本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[MSVC] MFCでパレットを使ったサンプル

文書番号: 401949

最終更新日: 2003/11/11


この資料は以下の製品について記述したものです。


概要

この資料は MFC のパレットクラス (CPalette) を利用したサンプルプログラムを紹介 したものです。

詳細

MFC を使って灰色のグラデーションを表示します。OnCreate のタイミングで、
256 色の白黒のパレットのオブジェクトを作成し、OnDraw のタイミングで灰色の
線を引きます。

サンプルプログラム

  #define PALSIZE 256
  class CPaletteView : public CView
  {
          public:
                  CPalette CPal;
                  void LineWrite(CDC*);
                     .
                     .
                     .
  }
  int CPaletteView::OnCreate(LPCREATESTRUCT lpCreateStruct)
  {
          //パレットの為のバッファを確保する
          PLOGPALETTE plp=(PLOGPALETTE)new char[sizeof(LOGPALETTE)+
                                  (PALSIZE-1)*sizeof(PALETTEENTRY)];
          //クラスウィザードが作成した行
          if (CView::OnCreate(lpCreateStruct) == -1)
                  return -1;
          plp->palVersion = 0x300;
          plp->palNumEntries= PALSIZE;
          for(int i=0; i< PALSIZE; i++){
                  plp->palPalEntry[i].peRed = (BYTE)i;    //灰色を設定している
                  plp->palPalEntry[i].peGreen = (BYTE)i;
                  plp->palPalEntry[i].peBlue = (BYTE)i;
                  plp->palPalEntry[i].peFlags = (BYTE)NULL;
          }
          CPal.CreatePalette(plp);  //パレットのオブジェクトを作る
          delete plp;
          return 0;
  }
  void CPaletteView::OnDraw(CDC* pDC)
  {
          CPaletteDoc* pDoc = GetDocument();
          pDC->SelectPalette(&CPal,1);
          pDC->RealizePalette();   // パレットを更新する
          LineWrite(pDC);          // 作成したパレットを使って描画をする
  }
  void CPaletteView::LineWrite(CDC *dc)
  {
          CPen cp;
          CPen *OldPen;
          for(int i=0; i<PALSIZE; i++){
                                          //ここは PALETTEINDEX を使っても良い
                  cp.CreatePen(PS_SOLID,5,PALETTERGB(i,i,i));
                  OldPen=dc->SelectObject(&cp);
                  dc->MoveTo(i,0);
                  dc->LineTo(i,100);
                  dc->SelectObject(OldPen);
                  cp.DeleteObject();
          }
  }

Keywords: KBHOWTO VC10 KB401949
Technology: kbAudDeveloper kbVCsearch

inserted by FC2 system