C#WinForm程式呼叫SVG,並動態在SVG圖上綁值
開始建立一個新的C #窗體應用程式,然後安裝SVG渲染庫使用NuGet包管理參考。
一、右鍵單擊解決方案資源管理器,選擇管理NuGet程式包;
二、選擇聯機,右上角搜尋框輸入SVG;
三、安裝SVG Rendering Library,完成後點關閉;
四、此時svg.dll的版本可能與工程專案框架中版本不同,手動將專案版本設定為.Net FrameWork 4或其他版本;
五、應用程式包含一個單獨的類來儲存SVG操作程式碼。由於圖片框是一個固定大小的svgparser由按比例縮放SVG影象合適的圖片框。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using Svg;
namespace Common
{
public class SVGParser
{
///
///支援的最大影象大小
///
public static Size MaximumSize { get; set; }
/// <summary> /// 將SVG檔案轉換為點陣圖影象。 /// </summary> /// <param name="filePath">SVG影象的全路徑。</param> /// <returns>返回轉換點陣圖影象。</returns> public static Bitmap GetBitmapFromSVG(string filePath) { SvgDocument document = GetSvgDocument(filePath); Bitmap bmp = document.Draw(); return bmp; } /// <summary> /// 獲取一個svgdocument操作使用提供的路徑。 /// </summary> /// <param name="filePath">點陣圖影象的路徑.</param> /// <returns>返回SVG文件</returns> public static SvgDocument GetSvgDocument(string filePath) { SvgDocument document = SvgDocument.Open(filePath); return AdjustSize(document); } /// <summary> /// 確保影象不超過最大大小,同時保留縱橫比 /// </summary> /// <param name="document">要調整大小的SVG文件</param> /// <returns>返回一個大小或根據該檔案的原始檔案。</returns> private static SvgDocument AdjustSize(SvgDocument document) { if (document.Height > MaximumSize.Height) { document.Width = (int)((document.Width / (double)document.Height) * MaximumSize.Height); document.Height = MaximumSize.Height; } return document; } }
}
六、定義一個SVG全域性變數:
private Svg.SvgDocument _SvgDocument;
七、將SVG圖顯示到圖片控制元件pictConvertedImage中;
SVGParser.MaximumSize = new Size(pictConvertedImage.Width, pictConvertedImage.Height);
_SvgDocument = SVGParser.GetSvgDocument(svgPsth);
八、SVG圖提前給要顯示資料的位置綁好Text,並設定Id;
例如:
九、呼叫遞迴方法獲取SVG圖中id=”abc”的點,繫結相應值,並設定字型顏色;
///
/// 遞迴在svg圖上賦值
///
/// 配置列表中資料
/// Svg標識點Id
/// 對應標識點的資料
/// 顏色的RGB值
private void GetChild(SvgElement element, string Id, string value, string msgColor)
{
if ((element is SvgText) && element.ID == Id)
{
(element as SvgText).Text = value;
try
{
var fColor = Color.FromArgb(Convert.ToInt32(msgColor));
(element as SvgText).Fill = new SvgColourServer(fColor);
}
catch (Exception ex)
{
(element as SvgText).Fill = new SvgColourServer(Color.Lime);
}
}
if (element.Children.Count > 0)
{
foreach (Svg.SvgElement item in element.Children)
{
GetChild(item, Id, value, msgColor);
}
}
十、點上幫完資料之後,重繪SVG圖,當不會真正改變圖片內容;
pictConvertedImage.Image = _SvgDocument.Draw();
相關推薦
C#WinForm程式呼叫SVG,並動態在SVG圖上綁值
開始建立一個新的C #窗體應用程式,然後安裝SVG渲染庫使用NuGet包管理參考。 一、右鍵單擊解決方案資源管理器,選擇管理NuGet程式包; 二、選擇聯機,右上角搜尋框輸入SVG; 三、安裝SVG Rendering Library,完成後點關閉
微信小程式 修改資料,並動態渲染頁面;修改陣列;
一、修改資料,並在頁面動態渲染 this.setData({ txt: '12112' }) 二、修改陣列 var rotateClassItem = 'rotateClass['+ index + ']'; t
C#:讀取html模板檔案,並替換修改檔案中指定值,儲存為修改後的檔案
1.準備html模板檔案:Pages/Device/DeviceModel8.html 2 using System.IO:讀取檔案內容,並替換指定內容 &nbs
C#Winform程式如何使用ClickOnce釋出並自動升級(圖解)
有不少朋友問到C#Winform程式怎麼樣配置升級,怎麼樣打包,怎麼樣釋出的,在這裡我解釋一下打包和釋出 關於打包的大家可以看我的文章C# winform程式怎麼打包成安裝專案(圖解) 其實打包是打包
C# WinForm 程式單例項執行,再次執行時啟用前一個例項
一個簡單的小程式,演示了winform程式如何執行單例項。當有例項執行時,再次單擊,會啟用第一個例項。 附主要原始碼: Program.cs using System; using System.Collections.Generic; using System.Linq
div寬度固定,將其中的文字換行,並動態獲取div的高
rip title oat clas 獲取 pre jquery logs -c <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title&
c#獲取當前系統時間,並提取按格式提取年月日為字符串
sta ogr mon 系統 ram AR 當前系統時間 ren 獲取 class Program { static void Main(String[] args) { DateTime currentTi
c# Winform登陸介面設計,登陸使用者不同許可權設定
要求:登陸介面,使用者只有管理員和普通使用者 管理員可以進行資料庫的增、刪、改、查;
C# WINFORM程式配置檔案操作方法
C# WINFORM程式配置檔案操作方法 在寫winform程式的時候,我們經常會把配置檔案寫在Settings.settings中, 但是,在這裡我們發現,儲存後,在程式中對這個配置進行修改並不能生效 程式級別的配置呢,我常用儲存在app.config中的appSettings節點中
python 匯入模組(使用程式匯入模組,並簡單對錯誤處理)
在python 中如果需要匯入一些模組,可以使用import xxx 或者使用from xx import xx 。只有這一種方式嗎,當然不是,還有一種就是使用程式碼將一些模組匯入。使用到的是 ` importlib ` 這個模組。 一般用法: import importlib imp
C語言 十進位制轉二進位制,並儲存在陣列中
#include <stdio.h> #define uint unsigned int #define ushort unsigned short uint transform_data(uint frequence,ushort* pwm_table) { uint temp
C# winform程式以管理員執行
一,選擇專案工程,右鍵 - 新增 - 新建項 - 應用程式清單檔案(字尾名為manifest) - 新增; 二,開啟剛新建的應用程式清單檔案(app.manifest),修改程式碼如下: 找到requestedExecutionLevel,將屬性級別的值修改為:requireAdminist
利用irc伺服器做物聯網資料轉發 c# winform程式
利用irc協議的優點: 免費,不用購買伺服器就可以實現穩定公網轉發資料 開源,irc的客戶端和開源庫眾多,省去了自己造輪子的時間 歷史悠久,網際網路誕生伊始就有irc 缺點:安全性比較差 簡單協議接收可以用:https://kiwiirc.com/ 下面是傳送客戶端
element el-tree循環遍歷樹形結構,並動態賦值disabled屬性
lse form 遍歷樹 alt fin img all uid 2-2 淩晨3點,功夫不負有心人,已經累趴,效果終於出來: 貼上代碼: <style scoped> .form { width: 50%; } </style>
c++對vector進行排序,並返回索引值
測試程式碼:(對向量進行排序,取一定範圍內的數值) vector<int> vec = {5,31,9,11,8,21,9,7,4};  
windows下idea編寫WordCount程式,並打jar包上傳到hadoop叢集執行(傻瓜版)
通常會在IDE中編制程式,然後打成jar包,然後提交到叢集,最常用的是建立一個Maven專案,利用Maven來管理jar包的依賴。 一、生成WordCount的jar包 1. 開啟IDEA,File→New→Project→Maven→Next→填寫Groupld和Artifactld→Ne
VS 2017 C++ 顯示螢幕視窗輸入,並顯示螢幕輸出
使用 cin >> Variable name;//從鍵盤輸入字元 如果使用 一個 cin.get(); 在輸入字元後,螢幕視窗會消失。 這時候,需要兩個 cin.get(); 語句
linux下python程式後臺執行,並將列印資訊儲存檔案
在跑比較時間比較長的程式,或者是列印資訊比較多的程式時,一般都會後臺執行程式,然後把列印資訊儲存在檔案中,等程式執行結束後再檢查輸出日誌。完成該功能可以用如下命令: nuhup python -u test.py > test.log 2>&1 &
利用C語言生成的資料作圖-並生成SVG(不借助任何作圖工具)
=" 1.00E+02 3.50E+02 1.04E+02 3.21E+02 1.08E+02 2.46E+02 1.11E+02 1.54E+02 1.15E+02 8.06E+01 1.19E+02 5.38E+01 1.23E+02 8.31E+01 1.26E+02 1.56E+02 1.30E+02
C語言 實現讀取檔案,並統計每個字元出現的個數
/***************** 實現讀取檔案,並統計每個字元出現的個數 *****************/ #include <stdio.h> #include <stdlib.h> unsigned long file_size;