|
|
|
สอบถามเรื่องการเขียนโปรแกรมสื่อการเรียนการสอนหน่อยครับ โดยใช้ Visual Basic |
|
|
|
|
|
|
|
Excel น่าจะเป็น guideline ให้ได้ครับ
ทำเป็นรูปแบบ Array
จะตอบโจทย์ 1-3
ส่วนข้อ 4 ใช้เป็นแบบเลือกเอา(combobox)เพราะมันประเมิณค่อนข้างยาก
|
|
|
|
|
Date :
2015-01-30 08:37:34 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 2 เขียนโดย : vengenz เมื่อวันที่ 2015-01-30 21:17:10
รายละเอียดของการตอบ ::
ที่ผมใช้อยู่เป็น line ครับ
แต่ในส่วนของ ชนิดของกราฟ ยังไม่เคยลองเล่นดู
Code (C#)
private void SetChart()
{
if (txtMean.Text == "" && txtSD.Text == "") { return; }
PictureBox1.Top = 5; PictureBox1.Left = 10;
PictureBox1.Width = ((aLS_F_711DataGridView.Rows.Count + 5) * SizeColumn > Panel1.Width) ? (aLS_F_711DataGridView.Rows.Count + 5) * SizeColumn : Panel1.Width;
PictureBox1.Height = Panel1.Height - 30;
// Set value
double _SD = double.Parse(txtSD.Text);
double vMain = double.Parse(txtMean.Text);
double vUp3SD = vMain + (3 * _SD);
double vUp2SD = vMain + (2 * _SD);
double vDwn2SD = vMain - (2 * _SD);
double vDwn3SD = vMain - (3 * _SD);
int lntMain = Convert.ToInt32(PictureBox1.Height / 2);
int lntUp3SD = lntMain - Convert.ToInt32(lntMain / 1.2);
int lntUp2SD = lntMain - Convert.ToInt32(lntMain / 2);
int lntDwn2SD = lntMain + Convert.ToInt32(lntMain / 2);
int lntDwn3SD = lntMain + Convert.ToInt32(lntMain / 1.2);
double ddd = (lntDwn3SD - lntUp3SD) / (vUp3SD - vDwn3SD);
b = new Bitmap((aLS_F_711DataGridView.RowCount + 5) * SizeColumn > Panel1.Width ? (aLS_F_711DataGridView.RowCount + 5) * SizeColumn : Panel1.Width, Panel1.Size.Height);
using (Graphics g = Graphics.FromImage(b))
{
g.Clear(PictureBox1.BackColor);
g.FillRectangle(Brushes.Black, new Rectangle(0, 0, b.Width, b.Height));
// PanelPicResize();
System.Drawing.Pen p;
// Set line Main
p = new System.Drawing.Pen(Brushes.Pink, 3);
g.DrawLine(p, SizeColumn, lntMain, b.Width, lntMain);
g.DrawString(string.Format("{0:0.0000}", vMain), this.Font, Brushes.Azure, 5, lntMain - 5);
p = new System.Drawing.Pen(Brushes.Yellow, 2);
//set line down 2SD
g.DrawLine(p, SizeColumn, lntDwn2SD, b.Width, lntDwn2SD);
g.DrawString(string.Format("{0:0.0000}", vDwn2SD), this.Font, Brushes.Azure, 5, lntDwn2SD - 5);
//set line Up 2SD
g.DrawLine(p, SizeColumn, lntUp2SD, b.Width, lntUp2SD);
g.DrawString(string.Format("{0:0.0000}", vUp2SD), this.Font, Brushes.Azure, 5, lntUp2SD - 5);
p = new System.Drawing.Pen(Brushes.Red, 2);
//set line down 3SD
g.DrawLine(p, SizeColumn, lntDwn3SD, b.Width, lntDwn3SD);
g.DrawString(string.Format("{0:0.0000}", vDwn3SD), this.Font, Brushes.Azure, 5, lntDwn3SD - 5);
//set line Up 3SD
g.DrawLine(p, SizeColumn, lntUp3SD, b.Width, lntUp3SD);
g.DrawString(string.Format("{0:0.0000}", vUp3SD), this.Font, Brushes.Azure, 5, lntUp3SD - 5);
int x1 = 0;
int y1 = 0;
int x2 = 0;
int y2 = 0;
x1 = SizeColumn;
x2 = SizeColumn + Convert.ToInt32(SizeColumn / 2.2);
y1 = lntMain;
y2 = 0;
p = new System.Drawing.Pen(Brushes.Blue, 5);
p.EndCap = System.Drawing.Drawing2D.LineCap.RoundAnchor;
p.StartCap = System.Drawing.Drawing2D.LineCap.RoundAnchor;
double c = (lntDwn3SD - lntUp3SD) / (vUp3SD - vDwn3SD);
if (aLS_F_711DataGridView.RowCount < 1) { return; }
for (int i = 0; i <= aLS_F_711DataGridView.RowCount - 1; i++)
{
if (i > 0)
{
x2 = x2 + SizeColumn;
}
if (aLS_F_711DataGridView[1, i].Value != null)
{
try
{
y2 = (int)((ddd * (vUp3SD - (double)aLS_F_711DataGridView[3, i].Value)) + lntUp3SD);
}
catch { }
//y2 = ((int)(ddd * ((vUp3SD - (double)aLS_F_711DataGridView[1, i].Value)) + lntUp3SD));
g.DrawLine(p, x1, y1, x2, y2);
g.DrawString(string.Format("{0:0.0000}", (double)aLS_F_711DataGridView[3, i].Value) + Environment.NewLine + string.Format("{0:dd/MM/yyyy}", (DateTime)aLS_F_711DataGridView[2, i].Value), this.Font, Brushes.White, x2 + 5, y2);
x1 = x2;
y1 = y2;
}
}
}
PictureBox1.BackgroundImage = b;
PictureBox1.Size = b.Size;
// MessageBox.Show("dgdfhgfh");
}
|
|
|
|
|
Date :
2015-01-31 09:14:03 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เป็นของ C# เดี๊ยวผมขอลองเล่นแปป
มีโค๊ดของ VB ไหมอ่ะครับ
ขอบคุณครับ
ปล. เอ่อพี่ครับ โทดทีๆ โค๊ดของพี่ผมต้องไปใส่ตรงไหนอ่ะครับ หน้า Windows Form เลยรึเปล่าครับ
|
ประวัติการแก้ไข 2015-01-31 13:58:07
|
|
|
|
Date :
2015-01-31 13:35:12 |
By :
vengenz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
นี่คือหน้าวาดกราฟของผมครับ แล้วจะให้ User ติ๊กเช๊คข้างๆแล้วขึ้น textbox ขึ้นมา แล้วกราฟจะให้วาดบน Panel ด้านข้างอ่ะครับ ผมสามารถใช้โค๊ดของพี่แปลงเป็น VB แล้ใช้ได้เลยไหมครับ
ขอบคุณครับ
|
|
|
|
|
Date :
2015-01-31 14:58:51 |
By :
vengenz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำไมไม่มีปุ่ม สำหรับ refresh ข้อมูลละครับ
งั้นเอาเป็นว่าทำตอนที่เราจะสร้างกราฟอ่าครับ
ผมเก็บไว้ในรูป void เพราะมันใช้งานง่าย
รูปแบบ แบบบ้านๆ ของผมคือ
1. เอาข้อมูลที่ได้มาทำเป็น array หรือ list เหมือน excel
2. ประมวลผลว่ามีกี่เส้น
3. เคลียร์ กราฟ
4. สร้างกราฟแต่ละ array
ถ้าถนัดด้าน object control ก็ลองสร้าง class กราฟ ดีกว่าครับมันจะจัดการได้ง่ายกว่า
ลดการเขียนโค๊ดลงไปโขเลย
|
|
|
|
|
Date :
2015-01-31 15:44:44 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ปุ่ม Clear เดี๋ยวผมไว้เพิ่มทีหลังครับผม เพราะโค๊ดมันแยกกันนิครับ
ตอนนี้ผมแค่ต้องการให้ตรง Panel ลากเส้นกราฟได้อ่ะครับ
รบกวนชี้ทางโค๊ดหน่อยครับ
ขอบคุณมากครับ
ปล. ที่พี่บอกเอาข้อมูลที่ได้มาทำเป็น array หรือ list เหมือน excel ผมนี่นึกภาพไม่ออกจริงๆเลยน่ะ
|
|
|
|
|
Date :
2015-01-31 15:54:11 |
By :
vengenz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|