2008年6月28日

[.NET] 圓餅圖

作者 MOONRAKER (㊣烏笨禿,又笨又禿) 看板 Visual_Basic
標題 Re: [.NET] 圓餅圖
時間 Sat Jun 28 00:57:43 2008
───────────────────────────────────────

一時興起寫了以下的code,就算是範例吧
獻醜了

http://dpaste.com/hold/59527/

---

NAME

drawpie - 簡易圓餅圖繪製工具

SYNOPSIS

drawpie(g, pieLeft, pieTop, pieWidth, pieHeight, colors(), slices())

PARAMETERS

g 要畫圖的graphics
pieLeft 圓餅圖的左上角X座標(想像一個圓的外接正方形的左上方頂點)
pieTop 圓餅圖的左上角Y座標
pieWidth 圓餅圖寬度
pieHeight 圓餅圖高度
colors() brush陣列,畫圓餅圖各塊要用的顏色
slices() integer陣列,圓餅圖各塊的百分比。是百分比喔!不是角度喔!

REMARKS

* 本sub不檢查slices()中各項總和是否為100,所以使用者要自己注意。
(不過這樣可以玩點花樣,例如畫不從正上方開始的圓餅圖)

* colors可以包含任意數量的brush,不會發生錯誤。如果brush比slice多,
那麼多出來的就不會用到;如果brush比slice少,那麼slice會重覆使用
顏色。如果colors中只有一個brush那麼所有的slice都是同一個顏色。

* 本sub會自動給每個slice加白邊,還沒有寫給每個slice畫不同邊的code,
但是很容易改出來。

* 還有以前很多商業圖範例都會做的某一塊pie外推若干pixels,目前也沒
寫,不過自己寫也很容易,用一點cos()和sin()就可以了。
 


Public Class Form1
Private Sub drawpie(ByRef g As Graphics, ByVal pieLeft As Integer, ByVal pieTop As Integer, _
ByVal pieWidth As Integer, ByVal pieHeight As Integer, _
ByRef colors As Brush(), ByRef slices As Integer())
Dim i As Integer, j As Integer, startAngle As Integer = -90
Dim borderPen As Pen = New Pen(Color.AntiqueWhite, 2.5)
Dim sliceDeg As Integer
Try
j = LBound(colors)
For i = LBound(slices) To UBound(slices)
sliceDeg = slices(i) * 360 / 100
g.FillPie(colors(j), pieLeft, pieTop, pieWidth, pieHeight, startAngle, sliceDeg)
g.DrawPie(borderPen, pieLeft, pieTop, pieWidth, pieHeight, startAngle, sliceDeg)
startAngle += sliceDeg
j += 1
If j > UBound(colors) Then j = LBound(colors)
Next i
Catch ex As Exception
End Try
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim b As Bitmap = New Bitmap(Pic1.Width, Pic1.Height)
Dim g As Graphics = Graphics.FromImage(b)
g.Clear(Color.Gray)
g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias

Dim pieleft As Integer = 10, pieTop As Integer = 10
Dim pieWidth As Integer = Pic1.Width - pieleft - 10
Dim pieHeight As Integer = Pic1.Height - pieTop - 10
Dim piecolors As Brush() = {Brushes.RoyalBlue, Brushes.Lime, Brushes.Turquoise, Brushes.SaddleBrown}
Dim pieslices As Integer() = {34, 19, 16, 10, 9, 7, 5}
drawpie(g, pieleft, pieTop, pieWidth, pieHeight, piecolors, pieslices)

Pic1.Image = b
End Sub
End Class

2008年6月9日

認識甲狀線疾病

資料來源處:http://www.ccue.com/forum/redirect.php?tid=2613&goto=lastpost
認識甲狀線疾病
正常人都有甲狀腺,其作用乃是合成、分泌甲狀腺激素而影響全身之新陳代謝。甲狀腺的位置在頸部的前下方,左右各有一葉而中間以峽部相連,外觀類似一隻蝴蝶的形狀。一般人的甲狀腺約重10到20公克,在吞嚥時會隨著氣管上下移動,但是除非甲狀腺發生瀰漫腫大或局部明顯的腫塊,否則是不易從體表外觸摸其腺體的存在。

甲狀腺疾病一般可略分為以功能異常為主、或以形態異常為主。在功能方面,如發生亢進則大多為葛瑞夫茲氏病﹝Graves’disease﹞;如發生低下則多為橋本氏甲狀腺炎﹝Hashimoto’sthyroiditis﹞或甲狀腺曾做過切除手術。功能亢進者的症狀常見有緊張、多汗、怕熱、心悸、體重減輕、手抖、失眠、容易腹瀉、月經減少;功能低下者的症狀則有怕冷、流汗減少、疲倦、行動遲緩、體重增加、便秘、心跳變慢等現象。葛瑞夫茲氏病和橋本氏甲狀腺炎皆為自體免疫疾病,甲狀腺在外觀可呈現瀰漫性腫大,臨床治療上則視其功能的變化而施以抗甲狀腺藥物或補充甲狀腺激素。

在形態方面,若甲狀腺冒出如腫塊般的異常變化,便稱之為甲狀腺結節﹝Thyroid nodule﹞。結節有可能是單一性或多發性;其內容物有可能是液態而稱為囊腫﹝Cyst﹞或為實心的細胞聚集所組成。常見的結節性病灶茲介紹如下:

1.亞急性甲狀腺炎:臨床上病人會表示先前有上呼吸道感染的症狀,接著在甲狀腺部位發生腫硬疼痛,嚴重者甚至會出現發燒、畏寒、心悸等不適。可測定血中之紅血球沈降速率﹝ESR﹞發現數值偏高,而超音波檢查可看到低回音度之局部病灶。治療上常須合用類固醇和消炎止痛藥。

2.出血性囊腫:即甲狀腺內的血管出血所造成。病人常發現它是一下子大起來,有時會伴隨局部的壓痛不適,治療上可嘗試用注射針筒將囊腫之內容物抽出。

3.良性結節腫:通常是指局部良性細胞增殖或膠體積聚所形成。治療上可服用甲狀腺激素來對病灶產生抑制性的效果。但若病灶實在太大而壓迫呼吸或外觀上對病人產生很大的心理障礙,則可考慮以手術做甲狀腺部份的切除。

4.甲狀腺癌:即指結節為惡性細胞的增殖,其種類包恬濾泡癌、乳突癌、髓質癌、未分化癌等。若為濾泡癌或乳突癌,則以手術切除為優先考慮,並於手術後再追加放射碘治療,以後終生服用甲狀腺激素並定期抽血檢驗甲狀腺球蛋白﹝Thyroglobulin﹞以追蹤是否有癌症復發的可能。若為髓質癌,則在手術切除後服甲狀腺激素,而後續追蹤以檢驗抑鈣素﹝Calcitonin﹞為主。未分化癌則好發年紀較大之病人,若合併發炎時則局部會有發紅疼痛之情況。一般而言,未分化癌很難以手術完全切除乾淨,故可考慮電療或化學治療,但其預後遠比其他甲狀腺癌差而易造成死亡。

所以一旦病人發現有甲狀腺方面的問題,則應抽血檢驗是否有功能異常或自體免疫的體質存在。而超音波檢查則可察知甲狀腺形態的異常變化,包括是否有瀰漫性腫大或囊腫、實心結節之存在。而以細針抽吸則可用嘗試將囊腫內含之液體抽出,也可抽出少量病灶細胞做化驗以判別良性或惡性,做為進一步治療之依據。