電視上氣象報告和新聞都是在一起的, 所以小弟也想把天氣預報放到新聞中, 當成一個群組來用, 研究後發現中央氣象局有個地方可以抓取天氣資料, 所以就寫了一段外加的程序, 可把天氣資料下載到JReader中.
氣象局資料下載方式和新聞下載方式不同, 所以這個程序是獨立寫的, 只有PC版才有能力抓取氣象資料, 若您是使用PDA直接在網上看新聞, 暫時無法看到氣象資料.
PC版和PDA版都有修改, 請同時更新兩邊的程式, 若有一個程式未更新, 系統不會有錯誤, 但是就看不到氣象資料了.
操作方式和先前版本完全相同, 沒有特別注意事項.



TheTurtle wrote:
你好
請問你的 標題文字是如何做出跑馬燈效果的, 謝謝你
呵, 好問題, 請見下方的VB.Net程式碼, 其中Timer1是用來讓字捲動用的, 而Set_Display比較複雜, 它算出要顯示的字的寛度, 若是其寬度大於顯示格, 則設定讓它捲動.
標題是放在一個Panel中, 改變其相對位置(Location屬性), 即可做出捲動的效果.
請不必太執著每一個變數名稱, 重點是如何利用VB.Net做出演算法, 看出端倪之後, 自行測試一下即可了解.
[啟動跑馬燈]
Sub Set_Display()
lblNewsTitle.Font = New Font(FntName, SZ1, FontStyle.Regular)
lblNewsTitle.BackColor = BG1
lblNewsTitle.ForeColor = FC1
Dim X As Integer = G.MeasureString(lblNewsTitle.Text, lblNewsTitle.Font).Width + 2
If X < Panel1.Width Then X = Panel1.Width
lblNewsTitle.Size = New Size(X, G.MeasureString(lblNewsTitle.Text, lblNewsTitle.Font).Height + 3)
Panel1.Size = New Size(Panel1.Width, lblNewsTitle.Height)
txtNews.Location = New Point(txtNews.Location.X, lblNewsTitle.Height + 8)
txtNews.Size = New Size(txtNews.Width, Me.Height - lblNewsTitle.Height - 40)
txtNews.Font = New Font(FntName, SZ3, FontStyle.Regular)
txtNews.BackColor = BG3
txtNews.ForeColor = FC3
' 看看是否需要捲動畫面
Timer1.Enabled = False
lblNewsTitle.Location = New Point(0, 2)
lblNewsTitle.Text = OriTitle
If lblNewsTitle.Width > Panel1.Width Then
lblNewsTitle.Width = lblNewsTitle.Width + 20
LblPos = 0
Delay = 8
Timer1.Interval = 210
Timer1.Enabled = True
End If
End Sub
[跑馬燈主程式]
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
' Delay用來讓字串捲動之前, 先暫停約二秒好讓使用者看清標題
If Delay > 0 Then
Delay -= 1
Else
Dim S As String
S = lblNewsTitle.Text
LblPos -= 1
If (LblPos - 1) <= -G.MeasureString(S.Substring(0, 1), lblNewsTitle.Font).Width Then
LblPos = 0
lblNewsTitle.Text = S.Substring(1) & S.Substring(0, 1)
If lblNewsTitle.Text = OriTitle Then
Delay = 6
End If
End If
lblNewsTitle.Location = New Point(LblPos, 2)
End If
End Sub
wsdc wrote:
Jimmy兄,
感謝您開發如此好用的程式分享給大家。
小弟從一月開始使用您的程式,真是方便呀。不過在使用3/2版本時遇到一個問題,小弟一般都是選擇Internet來源,在這一版常會發生 "ArgumentException" 之錯誤訊息,但一月的版本卻不會。是否可以請Jimmy兄幫忙查查看?Thanks!
小弟是不用PDA直接連Internet看新聞的, 所以那方面的問題比較沒注意到, 抽空會儘快進行測試, 造成您的不便, 敬請見諒!
TheTurtle wrote:
謝謝你的回答, 不過我是想寫一段跑馬燈的VB.NET程式, 所以我可能要很"執著"確切的變數關係, 我會好好研究一下的
1. 把Label放在一個Panel中.
2. 設定Label文字(Label.text="xxxxxx")
3. 計算Label文字大小, 並設定Label的大小(.Net CF不會自動變更Label大小).
4. 改變Label的起始位置為負值, 在畫面上就會向左移動了, 由於Panel的作用, 最左邊及最右邊的字都會被切掉.
以上是基本原理, 至於其它的指令都是在做一些檢查及效果而己, 就看您的創意了! 我也是從書上看到可使用Panel把字框住, 再加上個人的創意做出捲動的效果.
如果您太執著那些變數的計算, 可能會干擾您對程式的理解喔!
內文搜尋

X