MFC로 차트 ChartCtrlLibKit 만들기
12956 단어 MFCC++visualstudio2012VisualC++GDI+
만약 누락, 오류 등이 있으면 언제든지 써라.
GDI+를 이용해 그래프를 만드는 종류인 것 같아요.
코드프로젝트에 실체가 있습니다.
https://www.codeproject.com/Articles/317712/An-MFC-Chart-Control-with-Enhanced-User-Interface
컨디션
이름: TestApp
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)를 마우스 오른쪽 버튼으로 클릭합니다.를 참고하십시오.배치된 버튼 스크립트에서 아래에 설명되어 있습니다.
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);
}
이렇게 하면 완성된다.버튼이 창에 표시되고 파일이 저장됩니다.
Reference
이 문제에 관하여(MFC로 차트 ChartCtrlLibKit 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mm_sys/items/8b6cdf842eef1770cf26텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)