首先,要找到參考資料
(1) dicomlibrary:https://www.dicomlibrary.com/dicom/dicom-tags/ ,認識DiCom 的標籤。
(2) 再來一個參考文件:數位醫學影像去識別化實作指引手冊
(3)DiCom 元件:GitHub(fo-dicom),API-說明,C# - NuGet
(4) DICOM Viewer:https://www.radiantviewer.com/,說明。可以試用30天。好像很專業但是可以看文件來認識一下標籤這件事情。
有點無聊也想偶而寫點東西,好玩吧!
首先,要找到參考資料
(1) dicomlibrary:https://www.dicomlibrary.com/dicom/dicom-tags/ ,認識DiCom 的標籤。
(2) 再來一個參考文件:數位醫學影像去識別化實作指引手冊
(3)DiCom 元件:GitHub(fo-dicom),API-說明,C# - NuGet
(4) DICOM Viewer:https://www.radiantviewer.com/,說明。可以試用30天。好像很專業但是可以看文件來認識一下標籤這件事情。
(1) 直接寫入,只能寫一次,因為會覆蓋
string str1 = " welcome , hello , 12345 ";
string str2 = " welcome , hello , 54321 ";
// 將資料寫入,若檔案已存在則會被覆蓋
System.IO.File.WriteAllText("hello.txt", str1);
// 寫入完畢,立即關閉,只能保留最後一次的寫入資料
System.IO.File.WriteAllText("hello.txt", str2);
MessageBox.Show("OK");
結果
最後寫入結果只保留最後一次的資料
(2) 可以寫入多行但是還是有覆蓋的情形,使用 StreamWriter
string str1 = " welcome , hello , 12345 ";
string str2 = " welcome , hello , 54321 ";
// using System.IO;
// 資料存在則會覆蓋
using (StreamWriter outputFile = new StreamWriter("WriteText1.txt"))
{
outputFile.WriteLine(str1);
outputFile.WriteLine(str2);
// 寫入完畢會自動關閉
WriteToFile( outputFile, "1233456789");
}
MessageBox.Show("OK");
結果:可以寫入多行,但是下一次時,資料還是會被清除再來一次
(3) 可以寫入多行,可以附加資料,使用 StreamWriter,僅在宣告時有小細節,注意紅字部分
string str1 = " welcome , hello , 12345 ";
string str2 = " welcome , hello , 54321 ";
// using System.IO;
// 資料存在則會附加
using (StreamWriter outputFile = new StreamWriter("WriteText2.txt", true))
{
outputFile.WriteLine(str1);
outputFile.WriteLine(str2);
// 寫入完畢會自動關閉
WriteToFile(outputFile, "ABCDEFGHIJK");
}
MessageBox.Show("OK");
共用
private void WriteToFile( StreamWriter a, string str1)
{
a.WriteLine(str1);
}
VS2019 C# Windows From
//
private void button2_Click(object sender, EventArgs e)
{
addButton(this, "hello1",100,100,50,50);
addButton(tabPage1, "hello2", 0, 100, 50, 50);
addButton(tabPage2, "hello3", 0, 100, 50, 50);
}
// ==========================================================
private void addButton(Control a , string butText , int x , int y , int width , int Height)
{
Button Obj_Button = new Button();
Obj_Button.FlatStyle = FlatStyle.Standard;
Obj_Button.BackColor = Color.FromArgb(200, 250, 250);
Obj_Button.ForeColor = Color.Black;
Obj_Button.UseVisualStyleBackColor = true;
Obj_Button.Height = Height;
Obj_Button.Width = width;
Obj_Button.Location = new Point(x, y);
Obj_Button.Visible = true;
Obj_Button.Name = butText;
Obj_Button.Text = butText;
Obj_Button.Tag = butText;
Obj_Button.TextAlign = ContentAlignment.MiddleLeft;
Obj_Button.Click += new EventHandler(Buttons_Click);
a.Controls.Add(Obj_Button);
}
// ===== 新增事件 =======================
void Buttons_Click(object sender, EventArgs e)
{
this.Text = (sender as Button).Text;
}
有時候,有些資料除了文字之外還會有一些圖檔,所以就有一個想法,把圖檔變成一個欄位值也就是一對二進位碼,然後存到資料庫內,需要的時候再把資料取出,回組成圖檔,如此一來就不用文字+圖片分離了。
VB.NET
Dim myPhoto As Byte() = My.Computer.FileSystem.ReadAllBytes(img_FileName)
# img_FileName:圖檔檔名,完整路徑+檔名
# 宣告 myPhoto 為位元
# 資料庫內的欄位要宣告成 <Image>,使用的資料庫是MS-SQL2012。
Dim myphoto As Byte() = rs1("img_Pic") ' 從資料庫內讀出的二進位欄位
Dim MyFile As FileStream '串流
Dim imgFileName As String = "aa.png" ' 要還原的圖檔名稱,要注意副檔名,簡單說不能從存入jpg讀出變成png
MyFile = File.Open(imgFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite) ' 開啟檔案寫入模式
Dim myWriter As BinaryWriter = New BinaryWriter(MyFile) ' 開啟寫入器
myWriter.Write(myphoto) ' 寫入檔案
myWriter.Close() ' 關檔
以下利用讀寫來進行圖檔的複製
使用 kernel32.DLL
引用:using System.Runtime.InteropServices; //DllImport
範例:
class clsINI
{
[DllImport("kernel32")]
private static extern bool WritePrivateProfileString(string section, string key, string def, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
private string iniFileName;
//private bool bDisposed = false;
public clsINI(string xfilepath)
{
iniFileName = xfilepath;
}
public void WriteIni(string section, string key, string val)
{
WritePrivateProfileString(section, key, val, iniFileName);
}
public string ReadIni(string section, string key)
{
StringBuilder temp = new StringBuilder(255);
GetPrivateProfileString(section, key, "", temp, 255, iniFileName);
return temp.ToString();
}
}
參考:
https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-writeprivateprofilestringa
https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getprivateprofilestring
首先,要找到參考資料 (1) dicomlibrary: https://www.dicomlibrary.com/dicom/dicom-tags/ ,認識DiCom 的標籤。 (2) 再來一個參考文件: 數位醫學影像去識別化實作指引手冊 (3)DiCom 元件: GitH...