MFC로 차트 ChartCtrlLibKit 만들기

MFC로 차트 ChartCtrlLibKit 만들기
만약 누락, 오류 등이 있으면 언제든지 써라.
GDI+를 이용해 그래프를 만드는 종류인 것 같아요.
코드프로젝트에 실체가 있습니다.
https://www.codeproject.com/Articles/317712/An-MFC-Chart-Control-with-Enhanced-User-Interface
컨디션
  • Windows 10 Pro
  • Visual Stuido 2012 Professional
  • 테스트 항목 만들기
    이름: TestApp
  • 단일 문서
  • 기본 클래스->CFormView
  • 적당하다


    Download
    CodeProject 등록
    Download ChartCtrl LibKitVS2012(port to VS2012)-32MB를 다운로드하십시오.
    https://www.codeproject.com/Articles/317712/An-MFC-Chart-Control-with-Enhanced-User-Interface

    다운로드한 항목을 프로젝트로 이동
    코드 파일과 같은 곳에 두다.

    프로젝트에 파일 등록
    솔루션 자원 관리자에 끌어다 놓고 파일을 등록합니다.

    프로젝트 설정
    MFC
    Debug 공유, Release 정적
    Debug용
    구성 속성 -> 일반 -> MFC 사용 -> 공유 DLL에서 MFC 사용
    런타임 라이브러리
    속성 구성 -> 코드 생성 -> 런타임 라이브러리
    멀티스레드 디버그 DLL
    Release용
    구성 속성 -> 일반 -> MFC 사용 -> 정적 라이브러리에서 MFC 사용
    런타임 라이브러리
    속성 구성 -> 코드 생성 -> 런타임 라이브러리
    다중 스레드
    헤어 카
    구성 속성 -> 링크 -> 입력 -> 추가 종속 파일에 다음 항목 추가
    # Debug用
    $(ProjectDir)ChartCtrlLibD2012.lib
    # Release用
    $(ProjectDir)ChartCtrlLib2012.lib
    
    VC 2012용
    프로젝트 속성을 열고 다음을 클릭합니다.
    속성 설정 ->C/C++->프로세서->프로세서의 정의에 추가되었습니다_VARIADIC_MAX=10.
    입력 코드
    공식 How to useit를 기반으로 코드를 기술합니다.
    stdafx.h에 추기
    stdafx.h
    ...
    #include <stdlib.h>
    #include <tchar.h>
    #include <cmath>
    #include <vector>
    #include <deque>
    #include <map>
    #include <string>
    #include <sstream>
    #include <iomanip>
    #include <algorithm>
    #include <tuple>
    #include <random>
    #include "gdiplus.h"
    ...
    
    GDI+를 활성화합니다.
    TestApp.h의 CtestApp에 멤버를 추가합니다.
    TestApp.h
    class CTestAppApp : public CWinAppEx
    {
    private:
        ULONG_PTR m_nGdiplusToken;
    ...
    
    TestApp.cpp의 BOOL CTestAppApp::InitInstance()에 보충
    TestApp.cpp
    BOOL CTestAppApp::InitInstance()
    {
        Gdiplus::GdiplusStartupInput gdiplusStartupInput;
        Gdiplus::GdiplusStartup(&m_nGdiplusToken,
                             &gdiplusStartupInput, NULL);
    ...
    
    TestApp.cpp의 int CTestAppApp::ExitInstance()에 보충
    TestApp.cpp
    int CTestAppApp::ExitInstance()
    {
        Gdiplus::GdiplusShutdown(m_nGdiplusToken);
    
    리소스 뷰에서 Picture Control 구성
    프로젝트 제작 시 상태에 따라 달라지는 이번 조작은 다음과 같다.
    TestApp->TestApp.rc->Dialog->IDD_TESTAPP_FORM
    기본 배치 레이블을 제거하고 Buton 및 Picture Control을 구성합니다.
    Picture Control의 ID를 IDC_STCHARTCONTAINER로, Notify를 True로 변경합니다.

    구성원 설정
    솔루션 리소스 매니저, TestAppView.h에 include 추가
    TestAppView.h
    #include "ChartContainer.h"
    
    리소스 뷰에 배치된 Picuture Control->변수 추가(B)를 마우스 오른쪽 버튼으로 클릭합니다.를 참고하십시오.
  • 변수 유형: CChartContainer
  • 변수 이름: mchartContainer
  • 제어 ID: IDCSTCHARTCONTAINER
  • 테스트 데이터
    배치된 버튼 스크립트에서 아래에 설명되어 있습니다.
    TestAppView.cpp
    
        void CTestAppView::OnBnClickedButton1()
        {
            // TODO: ここにコントロール通知ハンドラー コードを追加します。
            // テスト用データ
            V_CHARTDATAD vData;
            vData.resize(4,PointD(0.0, 0.0));
            vData[0]=    PointD(0,2);
            vData[1]=    PointD(1,0);
            vData[2]=    PointD(2,2);
            vData[3]=    PointD(3,0);
    
            V_CHARTDATAD vData2;
            vData2.resize(4,PointD(0.0, 0.0));
            vData2[0]=   PointD(0,0);
            vData2[1]=   PointD(1,2);
            vData2[2]=   PointD(2,0);
            vData2[3]=   PointD(3,2);
    
            // ラベル
            string_t label(L"test");
            string_t ylabel(L"y_label");
    
            // グラフ作成
    
            int chartIdx = m_chartContainer.AddChart(
                true,           // 表示非表示
                false,          // データのポイントに丸を描くか
                label,          // ラベル
                ylabel, 
                1,              // Y軸の精度
                DashStyle(0),   // 線のスタイル(破線とか)
                5,              // 線幅
                float(1.0),     // カーブの強度
                Color(255, 255, 59, 45),  // 色
                vData,          // データ
                true);          // bRedraw は、グラフコンテナとその子(データラベルとチャート名の凡例)​​の再描画を要求するフラグ
    
            // 別のグラフを重ねる
            int chartIdx2 = m_chartContainer.AddChart(true,false,label, ylabel, 1, DashStyle(0),    5, float(0.1), Color(255, 15, 20, 255), vData2, true); 
    
            string_t path(L"save.jpeg");
            // 画像保存
        m_chartContainer.SaveContainerImage(path);
        }
    
    이렇게 하면 완성된다.
    버튼이 창에 표시되고 파일이 저장됩니다.

    좋은 웹페이지 즐겨찾기