[.Net] C# WinForm์์ ScottPlot์ผ๋ก ๊ทธ๋ํ, ์ฐจํธ ์ฝ๊ฒ ์ฌ์ฉํ๊ธฐ
์๊ฐ
ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด ๊บพ์์ ๊ทธ๋ํ๋ ์ํ ์ฐจํธ์ ๊ฐ์ UI ์ปดํฌ๋ํธ๊ฐ ํ์ํ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. MFC์์๋ ๊บพ์์ ๊ทธ๋ํ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ์ง์ GDI+
๋ก ๊ฐ๋ฐํ ๊ฒฝํ์ด ์๋๋ฐ์. ์์งํ UI ์ปดํฌ๋ํธ๋ฅผ ์ง์ ๋ง๋ค ์๋ ์์ง๋ง, ์ฌ๊ธฐ์ ์๊ฐ์ ํฌ์ํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ผ ์๊ฐํฉ๋๋ค. ์ด๋ฌ๋ค ๋ฉ์ธ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ ๊ธฐ๊ฐ๋ง ๋์ด๋๊ธฐ ๋๋ฌธ์ด์ฃ .
๊ทธ๋ฐ๋ฐ ์ด์ ๋ฐ๋๋ก C#์ ๋ฌด๋ฃ UI ์ปดํฌ๋ํธ๋ฅผ ๊ตฌํ๊ธฐ๊ฐ ์์ฃผ ์ฝ์ต๋๋ค. ์ฌ๋งํ ๊ฑด Nuget
์์ ์์ฃผ ์ฝ๊ฒ ์ฐพ์ ์ ์๊ธฐ ๋๋ฌธ์ด์ฃ . ์ฐจํธ๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ScottPlot ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ ๋๊ฒ์์ ์ค์นํ๊ณ ๋ฐ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
ScottPlot ํน์ง
- ๋ฌด๋ฃ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅ(MIT License)
- Windows Forms, WPF ๋ชจ๋ ์ง์
- ๋ค์ํ ์ฐจํธ ์ง์(Bar, Bubble, Coxcomb, Curve, Finance, Pie, Polygon ๋ฑ ๋ค์)
- ๋ง์ฐ์ค ๋ฐ ํค๋ณด๋ ์ํธ ๋์
- ์ฌ์ฉ์ ํธ์๋ฅผ ์ํ Demo Program๊ณผ Quick Start Cookbook์ ์ ๊ณตํ์ฌ ๋น ๋ฅธ ๊ฐ๋ฐ ๊ฐ๋ฅ
์ ๊ฐ ์ฌ์ฉํด ๋ณด๋ฉด์ ๋๋ ์ฅ์ ๋ค์ ๋์ดํด ๋ณด์์ต๋๋ค. ์๋ง ์ด ์ธ์๋ ํน์ง์ด ๋ ์์ ํ ๋ฐ์. ์ ํน์ง ์ค ๊ฐ์ฅ ์ค์ํ ์ ์ '๋ฌด๋ฃ'์ธ ๊ฒ๊ณผ 'Demo Program' ๋ฐ 'Quick Start Cookbook'์ด๋ผ ์๊ฐํฉ๋๋ค. ์ด๋ ๊ฒ๋ ์ข์ ์ฐจํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฌด๋ฃ๋ก ์ ๊ณตํ๋ค๋ ์ ์ ์์ฃผ ๋๋ผ์ ์ต๋๋ค. ๊ฒ๋ค๊ฐ ์ฌ์ฉ์์ ํธ์๋ฅผ ์ํด ๋ชจ๋ ์ฐจํธ์ ๋ฐ๋ชจ ํ๋ก๊ทธ๋จ๊ณผ Quick Start Cookbook์ ์ ๊ณตํ์ฌ ์์ค ์์ ๋ ์ฝ๊ฒ ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ๋๋ฌด๋๋ ์น์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ๋ง ์ค๋๋ง์ ๋ณธ ๋ฏํ๋ค์.
https://scottplot.net/cookbook/4.1/
ScottPlot ๋ฐ๋ชจ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ฒํ ํ๊ธฐ
์๋ ScottPlot Demo ํ์ด์ง์ ์ ์ํฉ๋๋ค.
์ ์ฌ์ดํธ์ ์ ์ํ๋ฉด ์๋์ ๊ฐ์ด ํ์๋ฉ๋๋ค. ์ข์ธก์ Windows Forms ๋ฒํผ์ ํด๋ฆญํ์ฌ ๋ฐ๋ชจ ํ๋ก๊ทธ๋จ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
๋ค์ด๋ก๋ํ ์์ถ ํ์ผ์ ํด์ ํ ํ ScottPlot.Demo.WinForms.exe
ํ์ผ์ ์คํํฉ๋๋ค.
Launch ScottPlot Cookbook ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์๋์ ๊ฐ์ด ๋ชจ๋ Plot์ ๊ธฐ๋ฅ๊ณผ ์ค๋ช , ์์ค ์ฝ๋๊ฐ ํ์๋ฉ๋๋ค. ์ํ๋ ํ๋กฏ์ด ์ง์๋๋์ง, ์ง์๋๋ค๋ฉด ์ด๋ค ๋์์ ์์ํ๊ณ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ๋ฏธ๋ฆฌ ์ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ ๋ง ์ธ์ฌํ๊ฒ ์ ๊ฒฝ ์ผ๋ค๋ ๊ฒ์ด ๋๊ปด์ง๋๋ค.
๊ทธ ์ธ์ Plot ๋ฒํผ์ ํด๋ฆญํ๋ฉด, ์ง์ ์ปจํธ๋กคํ์ฌ Plot์ ๋์์ ํ์ธํ ์ ์์ต๋๋ค.
WinForm์์ ScottPlot ์ค๋นํ๊ธฐ
Windows Forms ์ฑ(.NET Framework) ํ๋ก์ ํธ๋ฅผ ExamScottPlot
์ด๋ฆ์ผ๋ก ์์ฑํฉ๋๋ค.
NuGet์์ ScottPlot์ ๊ฒ์ํ๊ณ , ScottPlot.WinForms
๋ฅผ ์ ํํฉ๋๋ค.
์ค์นํ ํ๋ก์ ํธ๋ฅผ ์ ํํ๊ณ ์ค์น ๋ฒํผ์ ํด๋ฆญํ์ฌ ์ค์นํฉ๋๋ค.
์ ์์ ์ผ๋ก ์ค์น๊ฐ ์๋ฃ๋๋ฉด, ์๋์ ๊ฐ์ด ํ๋ก์ ํธ ์ฐธ์กฐ์ ScottPlot
๊ณผ ScottPlot.WinForms
์ด ํ์๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋๊ตฌ ์์์ ์๋์ ๊ฐ์ด FormsPlot์ด๋ผ๋ ์ปดํฌ๋ํธ๊ฐ ํ์๋ฉ๋๋ค.
WinForm์์ Scatter Plot ๋ง๋ค๊ธฐ
์ปจํธ๋กค์ ํผ์ ์ถ๊ฐํ๋ฉด ์๋์ ๊ฐ์ด ํ์๋ฉ๋๋ค.
ScottPlot demo ์ค 'Scatter Plot Quickstart'๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค. ์๋์ ํ์ํ ์์ค ์ฝ๋๋ฅผ ๊ทธ๋๋ก ๋ณต์ฌํฉ๋๋ค.
์ฝ๋๋ ์๋์ ๊ฐ์ต๋๋ค.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ScottPlot; //์ถ๊ฐ
namespace ExamScottPlot
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnInitialize_Click(object sender, EventArgs e)
{
int pointCount = 51;
double[] x = DataGen.Consecutive(pointCount);
double[] sin = DataGen.Sin(pointCount);
double[] cos = DataGen.Cos(pointCount);
scatterPlot.Plot.AddScatter(x, sin);
scatterPlot.Plot.AddScatter(x, cos);
scatterPlot.Refresh();
}
}
}
๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ๊น์? ๋ฐ๋ชจ ๋์์ด๋ ๋์ผํ๊ฒ ์์ง์ ๋๋ค. ์ฝ๋ ๋ด์ฉ๋ ์์ฃผ ๊ฐ๋จํ์ฃ ? 51๊ฐ์ X์ถ ๋ฐ์ดํฐ์, X์ถ์ ๋์๋๋ sin, cos ๊ฐ์ double ๋ฐฐ์ด๋ก ๋ฐ์๋๊ฒจ๋ง ์ฃผ๋ฉด ๋์ ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ์ด ์ฐธ ๊ฐ๋จํ์ฃ ? ์์ธํ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์๋ ์์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ธ์.
'Programming > .Net' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[ASP.NET] C# Windows Docker ์ฉ ์์ ์ ์๋น์ค ๋ง๋๋ ๋ฐฉ๋ฒ
[ASP.NET] C# Windows Docker ์ฉ ์์ ์ ์๋น์ค ๋ง๋๋ ๋ฐฉ๋ฒ
2022.02.15 -
[.Net] C# ๋ ๋๋ง์ธ REST API ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ(์์ ํฌํจ)
[.Net] C# ๋ ๋๋ง์ธ REST API ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ(์์ ํฌํจ)
2022.02.10 -
[.Net] WPF NodeNetwork ํ๋ก์ ํธ ํ๊ฒฝ ๊ตฌ์ฑ ๋ฐ Hello World ๋ง๋ค๊ธฐ(์์ ํฌํจ)
[.Net] WPF NodeNetwork ํ๋ก์ ํธ ํ๊ฒฝ ๊ตฌ์ฑ ๋ฐ Hello World ๋ง๋ค๊ธฐ(์์ ํฌํจ)
2021.12.27 -
[.Net] WPF NodeNetwork ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ํน์ง ์์๋ณด๊ธฐ
[.Net] WPF NodeNetwork ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ํน์ง ์์๋ณด๊ธฐ
2021.12.18