เครื่องมือแก้ไข Downcodes จะแสดงวิธีใช้ตัวควบคุมแผนภูมิเพื่อวาดแผนภูมิพิกัดแบบเรียลไทม์ใน C# บทความนี้จะแนะนำรายละเอียดเกี่ยวกับขั้นตอนสำคัญในการกำหนดค่าการควบคุมแผนภูมิ การตั้งค่าชุดข้อมูล การอัปเดตข้อมูลแบบเรียลไทม์ และการเพิ่มประสิทธิภาพการทำงานของแผนภูมิ นอกจากนี้ ยังจะให้คำแนะนำการปรับให้เหมาะสมขั้นสูงและฟังก์ชันต่างๆ เพื่อช่วยให้คุณสามารถสร้างประสิทธิภาพแบบเรียลไทม์ได้อย่างง่ายดาย แผนภูมิข้อมูลเวลา บทความนี้ยังมาพร้อมกับคำถามที่พบบ่อยเพื่อตอบความสับสนที่คุณอาจพบเมื่อใช้ตัวควบคุมแผนภูมิ
หากต้องการวาดจุดพิกัดแบบเรียลไทม์โดยใช้ตัวควบคุมแผนภูมิใน C# คุณต้องอัปเดตแหล่งข้อมูลเป็นประจำและรีเฟรชแผนภูมิเพื่อแสดงข้อมูลใหม่ ขั้นตอนหลักประกอบด้วยการกำหนดค่าตัวควบคุมแผนภูมิ การตั้งค่าชุดข้อมูล การใช้ตัวจับเวลา และการอัปเดตและการวาดแผนภูมิใหม่ กระบวนการนี้จะอธิบายโดยละเอียดด้านล่าง
ขั้นแรก คุณต้องเพิ่มตัวควบคุมแผนภูมิให้กับโปรเจ็กต์ C# สามารถพบได้ในกล่องเครื่องมือของ Visual Studio ลากเครื่องมือแผนภูมิลงบนแบบฟอร์ม จากนั้นเครื่องมือจะสร้างตัวควบคุมแผนภูมิโดยอัตโนมัติ คุณสามารถแก้ไขชื่อของตัวควบคุมผ่านหน้าต่างคุณสมบัติ เช่น เปลี่ยนเป็น realtimeChart เพื่อให้อ้างอิงได้ง่าย
ถัดไป ดำเนินการกำหนดค่าเบื้องต้นของตัวควบคุมแผนภูมิ คุณต้องตั้งค่าประเภทแผนภูมิ ตัวอย่างเช่น แผนภูมิเชิงเส้น (SeriesChartType.Line) เหมาะสำหรับการแสดงข้อมูลต่อเนื่อง คุณสามารถตั้งชื่อ ป้ายกำกับ สี และคุณสมบัติสไตล์อื่นๆ ของแกน X และแกน Y ของแผนภูมิได้ ตัวอย่างเช่น:
realtimeChart.Series[0].ChartType = SeriesChartType.Line;
realtimeChart.ChartAreas[0].AxisX.Title = เวลา;
realtimeChart.ChartAreas[0].AxisY.Title = ค่า;
อย่าลืมว่าเพื่อให้สามารถอัปเดตแบบเรียลไทม์ได้ จะต้องตั้งค่าค่าต่ำสุดและสูงสุดของแกน X และแกน Y ของตัวควบคุมแผนภูมิเป็นอัตโนมัติ:
realtimeChart.ChartAreas[0].AxisX.IsMarginVisible = false;
realtimeChart.ChartAreas[0].AxisX.AutoScroll = จริง;
เพื่อให้แน่ใจว่าแผนภูมิจะเลื่อนโดยอัตโนมัติเมื่อมีการเพิ่มจุดข้อมูลใหม่
จากนั้น ให้ตั้งค่าชุดข้อมูลซึ่งเป็นชุดของจุดข้อมูลที่ลงจุดแผนภูมิ ชุดข้อมูลมีพารามิเตอร์มากมายที่สามารถตั้งค่าได้ รวมถึงสี ความกว้าง และรูปแบบของจุด ตัวอย่างเช่น คุณสามารถกำหนดซีรี่ส์ชื่อ "DataSeries" เพื่อแสดงข้อมูลแบบเรียลไทม์:
ซีรี่ส์ dataSeries = ซีรี่ส์ใหม่ (DataSeries)
-
สี = สีฟ้า,
ความกว้างของเส้นขอบ = 2,
IsVisibleInLegend = เท็จ
IsXValueIndexed = จริง
ChartType = SeriesChartType.Line
-
realtimeChart.Series.Add (ชุดข้อมูล);
ก่อนที่จะทำการอัพเดตข้อมูลแบบเรียลไทม์ คุณต้องสร้างวิธีการอัพเดตข้อมูลก่อน โดยปกติแล้วคอมโพเนนต์ System.Windows.Forms.Timer จะใช้ในการเรียกวิธีการอัปเดตซ้ำๆ ในช่วงเวลาที่กำหนด
ก่อนอื่นเราเริ่มต้นและกำหนดค่า Timer ในตัวสร้างแบบฟอร์ม:
ตัวจับเวลา updateTimer = ตัวจับเวลาใหม่ ();
updateTimer.Interval = 1,000; // ตั้งค่าช่วงเวลาเป็น 1,000 มิลลิวินาที
updateTimer.Tick += new EventHandler(UpdateChart); // เชื่อมโยงกับเหตุการณ์การดำเนินการตามกำหนดเวลา
updateTimer.Start(); // เริ่มจับเวลา
วิธีการ UpdateChart จะรับผิดชอบในการอัปเดตข้อมูลแบบเรียลไทม์:
โมฆะส่วนตัว UpdateChart (ผู้ส่งวัตถุ EventArgs e)
-
// ที่นี่คุณต้องเพิ่มตรรกะเพื่อรับข้อมูลแบบเรียลไทม์
newData สองเท่า = FetchNewData();
//เพิ่มข้อมูลลงในซีรี่ส์
realtimeChart.Series[DataSeries].Points.AddY(ข้อมูลใหม่);
// ทำให้แผนภูมิแสดงจุดข้อมูลจำนวนหนึ่งเป็นปัจจุบันอยู่เสมอ เช่น 100 จุดล่าสุด
ในขณะที่ (realtimeChart.Series[DataSeries].Points.Count > 100)
-
realtimeChart.Series[DataSeries].Points.RemoveAt(0);
-
realtimeChart.Invalidate(); // ทำให้แผนภูมิใช้ไม่ได้และบังคับให้วาดใหม่
-
เมธอด FetchNewData เป็นฟังก์ชันสมมุติที่ควรแทนที่ด้วยตรรกะค่าของแหล่งข้อมูลของคุณ
เมื่อต้องจัดการกับแผนภูมิข้อมูลแบบเรียลไทม์ ประสิทธิภาพถือเป็นปัญหาที่ไม่สามารถละเลยได้ เนื่องจากข้อมูลได้รับการรีเฟรชอย่างต่อเนื่อง คุณจึงต้องแน่ใจว่าแผนภูมิของคุณมีความราบรื่นและตอบสนองได้ดี มีหลายแง่มุมที่สามารถพิจารณาเพื่อการเพิ่มประสิทธิภาพได้:
การจัดการจุดข้อมูล: จำกัดจำนวนจุดข้อมูลที่แสดงในแผนภูมิและลบจุดข้อมูลเก่าออกเพื่อลดหน่วยความจำและความกดดันในการแสดงผล ลดความถี่ในการอัปเดต: เลือกช่วงเวลาของตัวจับเวลาอย่างสมเหตุสมผลเพื่อให้แน่ใจว่าข้อมูลมีลักษณะแบบเรียลไทม์ในขณะที่ลดภาระของ CPU ปิดเอฟเฟกต์ภาพเคลื่อนไหวของแผนภูมิ: ภาพเคลื่อนไหวจะใช้ทรัพยากรเพิ่มเติม และแผนภูมิแบบเรียลไทม์มักไม่จำเป็นต้องใช้เอฟเฟกต์ภาพเคลื่อนไหวอย่าลืมเรียกใช้เมธอด Chart.Invalidate() หลังจากเพิ่มจุดข้อมูลหรือแก้ไขการตั้งค่าแผนภูมิ ซึ่งจะทำให้ตัวควบคุมแผนภูมิวาดตัวเองใหม่เพื่อแสดงการอัปเดต หากคุณไม่เรียกใช้วิธีนี้ คุณอาจไม่เห็นการเปลี่ยนแปลงข้อมูลแบบเรียลไทม์
สำหรับแผนภูมิข้อมูลเรียลไทม์ที่ซับซ้อนมากขึ้น คุณอาจต้องการพิจารณาสิ่งต่อไปนี้:
การอัปเดตแบบมัลติเธรด: หากการรับข้อมูลและการคำนวณใช้เวลานาน คุณสามารถพิจารณาใช้การเขียนโปรแกรมแบบมัลติเธรดหรืออะซิงโครนัสเพื่อหลีกเลี่ยงการค้างของอินเทอร์เฟซ การแคชข้อมูล: ในบางกรณี การแคชสามารถใช้เพื่อเพิ่มประสิทธิภาพให้กับข้อมูลที่จะไม่สามารถอ่านได้หลายครั้งในช่วงเวลาสั้นๆ การปรับแต่งโดยละเอียด: ปรับแต่งสเกลของแกน X และแกน Y, จัดรูปแบบวิธีการแสดงข้อมูล ฯลฯ ตามความต้องการเฉพาะเพื่อแสดงข้อมูลได้ดียิ่งขึ้นการใช้ตัวควบคุมแผนภูมิใน C# เพื่อสร้างแผนภูมิพิกัดแบบเรียลไทม์เกี่ยวข้องกับหลายระดับ เช่น การกำหนดค่าการควบคุม การอัปเดตข้อมูล และการเพิ่มประสิทธิภาพการทำงาน ด้วยการทำตามคำแนะนำข้างต้น คุณจะสามารถสร้างแผนภูมิข้อมูลเรียลไทม์พื้นฐานได้ ซึ่งสามารถปรับเปลี่ยนและปรับให้เหมาะสมเพื่อให้ตรงตามความต้องการเฉพาะของคุณได้
1. จะใช้การควบคุมแผนภูมิเพื่อวาดแผนภูมิพิกัดแบบเรียลไทม์ใน C# ได้อย่างไร
ในการวาดแผนภูมิพิกัดแบบเรียลไทม์ใน C# คุณสามารถใช้ตัวควบคุมแผนภูมิได้ ขั้นแรก เพิ่มตัวควบคุมแผนภูมิให้กับแอปพลิเคชันฟอร์ม C# ของคุณ จากนั้นคุณสามารถตั้งค่าและพล็อตพิกัดแบบเรียลไทม์ได้โดยใช้ขั้นตอนต่อไปนี้:
สร้างวัตถุตัวจับเวลาเพื่อควบคุมความถี่ในการรีเฟรชของแผนภูมิ ใช้คุณสมบัติชุดของตัวควบคุมแผนภูมิเพื่อสร้างชุดแผนภูมิอย่างน้อยหนึ่งชุด (ชุด) แต่ละชุดแสดงถึงลำดับข้อมูล เช่น การรวบรวมจุดพิกัด ในเหตุการณ์ Tick ของตัวจับเวลา ตามความถี่ในการอัปเดตข้อมูลเรียลไทม์ ข้อมูลพิกัดล่าสุดจะถูกรับและเพิ่มลงในชุดแผนภูมิ หลังจากเพิ่มข้อมูล ให้เรียกใช้เมธอด Invalidate ของตัวควบคุมแผนภูมิเพื่อบังคับให้ตัวควบคุมแผนภูมิวาดใหม่ข้างต้นเป็นการใช้งานที่เรียบง่าย คุณสามารถปรับแต่งแผนภูมิเพิ่มเติมได้โดยการตั้งค่าสไตล์และสีของแผนภูมิ เพิ่มชื่อและคำอธิบาย ฯลฯ
2. จะประมวลผลข้อมูลแบบเรียลไทม์และอัปเดตแผนภูมิพิกัดบนตัวควบคุมแผนภูมิใน C# ได้อย่างไร
การประมวลผลข้อมูลแบบเรียลไทม์และการอัปเดตแปลงพิกัดบนตัวควบคุมแผนภูมิเป็นข้อกำหนดทั่วไปใน C# คุณสามารถทำตามขั้นตอนเหล่านี้:
ขั้นแรก รับข้อมูลแบบเรียลไทม์โดยใช้วิธีการที่เหมาะสม (เช่น การสื่อสารแบบอนุกรม คำขอเครือข่าย ฯลฯ) ประมวลผลและแยกวิเคราะห์ข้อมูลที่ได้มาเพื่อให้ได้ข้อมูลพิกัดที่ต้องการ การอัปเดตข้อมูลพิกัดในตัวควบคุมแผนภูมิสามารถทำได้โดยการแก้ไขคอลเลกชัน DataPoints ในออบเจ็กต์ Series ของแผนภูมิ หลังจากอัปเดตข้อมูลแล้ว คุณสามารถเรียกใช้เมธอดรีเฟรชของตัวควบคุมแผนภูมิเพื่อรีเฟรชแผนภูมิเพื่อแสดงพิกัดล่าสุดได้เป็นที่น่าสังเกตว่าเมื่อประมวลผลข้อมูลแบบเรียลไทม์ อาจจำเป็นต้องวาดแผนภูมิในขณะที่ข้อมูลได้รับการอัปเดตเพื่อให้แน่ใจว่าแผนภูมิพิกัดแบบเรียลไทม์และแม่นยำ
3. จะใช้เอฟเฟกต์การเลื่อนข้อมูลของแผนภูมิพิกัดแบบเรียลไทม์ใน C# ได้อย่างไร
หากคุณต้องการบรรลุผลการเลื่อนข้อมูลของแผนภูมิพิกัดแบบเรียลไทม์ คุณสามารถทำได้โดยทำตามขั้นตอนต่อไปนี้:
ขั้นแรก ให้ตั้งค่าช่วงการแสดงแกน X ของตัวควบคุมแผนภูมิ คุณสามารถใช้วัตถุแกนของตัวควบคุมแผนภูมิเพื่อตั้งค่าต่ำสุดและสูงสุดของแกน X เพื่อจำกัดช่วงการแสดงจุดพิกัดบนแกน X จากนั้น ตามความถี่ในการอัปเดตของข้อมูลเรียลไทม์ ในเหตุการณ์ Tick ของตัวจับเวลา ให้รับข้อมูลพิกัดล่าสุดและเพิ่มลงในชุดแผนภูมิ หลังจากเพิ่มข้อมูลในแต่ละครั้ง ให้ตรวจสอบว่าจำนวนจุดพิกัดถึงค่าสูงสุดของช่วงการแสดงผลหรือไม่ หากเป็นเช่นนั้น ให้ลบจุดพิกัดแรกสุดออกเพื่อให้ได้รับผลจากการเลื่อนข้อมูล สุดท้าย เรียกเมธอด Invalidate ของตัวควบคุมแผนภูมิเพื่ออัปเดตแผนภูมิด้วยขั้นตอนข้างต้น คุณสามารถสร้างแผนภูมิพิกัดแบบเรียลไทม์พร้อมเอฟเฟกต์การเลื่อนข้อมูลได้ เอฟเฟกต์นี้จะแสดงข้อมูลล่าสุดแบบเรียลไทม์ และทำให้อินเทอร์เฟซของแผนภูมิสะอาดตาและอ่านง่าย
ฉันหวังว่าบทความนี้จะช่วยให้คุณเชี่ยวชาญวิธีการใช้ตัวควบคุมแผนภูมิเพื่อวาดแผนภูมิพิกัดแบบเรียลไทม์ใน C# หากคุณมีคำถามใด ๆ โปรดฝากข้อความไว้ในพื้นที่แสดงความคิดเห็น