PDA

View Full Version : سوال: انداختن متن فارسی روی ویدئو با aforge



Fartaj
یک شنبه 05 بهمن 1393, 23:27 عصر
سلام دوستان

من برای پروژه ای نیازداشتم تصویر دوربین رو بگیرم و ضبط کنم و در حین ضبط متن فارسی دلخواه روی ویدئو بندازم حالا تا الان با aforge تصویر دوربین رو گرفتم حالا می خوام یک متن روی ویدئو بندازم ممنون می شم راهنمایی کنید ؟

mmbguide
چهارشنبه 22 بهمن 1393, 22:59 عصر
من در یکی از برنامه هام از این کد استفاده کردم. نگاه بندازی متوجه میشه چکار کردم


Private Sub videoSourcePlayer_NewFrame(ByVal sender As Object, ByRef image As Bitmap) Handles videoSourcePlayer.NewFrame
Static Once As Byte
Once += 1
If Once = 1 Then
If Me.comCodec.SelectedIndex = 0 Then
AVI_Writer = New AVIWriter("MPG4")
ElseIf Me.comCodec.SelectedIndex = 1 Then
AVI_Writer = New AVIWriter("MP42")
ElseIf Me.comCodec.SelectedIndex = 2 Then
AVI_Writer = New AVIWriter("MSVC")
ElseIf Me.comCodec.SelectedIndex = 3 Then
AVI_Writer = New AVIWriter()
End If


If CType(Me.videoResolutionsCombo.SelectedItem, Size).Width = 1280 Then
AVI_Writer.FrameRate = 8
ElseIf CType(Me.videoResolutionsCombo.SelectedItem, Size).Width = 640 Then
AVI_Writer.FrameRate = 15
End If


AVI_Writer.Open(frmMain.ProjectAddress & "\Video.avi", 640, 480)


ElseIf Once > 10 Then
Once = 2
End If


Dim SizeH As Integer = CType(Me.videoResolutionsCombo.SelectedItem, Size).Height
Dim SizeW As Integer = CType(Me.videoResolutionsCombo.SelectedItem, Size).Width


Dim G As Graphics = Graphics.FromImage(image)
G.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias


Dim VideoDataFont As New Font("Tahoma", 20, FontStyle.Regular, GraphicsUnit.Pixel)
Dim VideoDateTime As String = EricssonTestClass.ShamsiDate & " ساعت " & Now.TimeOfDay.ToString
Dim VideoPosition As String = "Frame Number : " & AVI_Writer.Position.ToString & " ::: Second/100 : " & TimerValueHoler.ToString
Dim VideoDataSize As SizeF = G.MeasureString(VideoDateTime, VideoDataFont)
Dim VideoPositionSize As SizeF = G.MeasureString(VideoPosition, VideoDataFont)
Dim VideoDataX As Integer = SizeW - VideoDataSize.Width
Dim VideoDataY As Integer = 0
Dim VideoDataW As Integer = VideoDataSize.Width
Dim VideoDataH As Integer = VideoDataSize.Height


If Me.chkCenterPoint.CheckState = CheckState.Checked Then
G.DrawLine(Pens.Yellow, New Point(0, SizeH / 2), New Point(SizeW, SizeH / 2))
G.DrawLine(Pens.Yellow, New Point(SizeW / 2, 0), New Point(SizeW / 2, SizeH))
G.FillEllipse(Brushes.Red, New Rectangle(New Point((SizeW / 2) - 8, (SizeH / 2) - 8), New Size(16, 16)))
End If


If Me.chkShowGrid.CheckState = CheckState.Checked Then
G.DrawLine(Pens.White, New Point(0, SizeH / 2 - (0.2 * (SizeH / 2))), New Point(SizeW, SizeH / 2 - (0.2 * (SizeH / 2))))
G.DrawLine(Pens.White, New Point(0, SizeH / 2 - (0.4 * (SizeH / 2))), New Point(SizeW, SizeH / 2 - (0.4 * (SizeH / 2))))
G.DrawLine(Pens.White, New Point(0, SizeH / 2 - (0.6 * (SizeH / 2))), New Point(SizeW, SizeH / 2 - (0.6 * (SizeH / 2))))
G.DrawLine(Pens.White, New Point(0, SizeH / 2 - (0.8 * (SizeH / 2))), New Point(SizeW, SizeH / 2 - (0.8 * (SizeH / 2))))
G.DrawLine(Pens.White, New Point(0, SizeH / 2 + (0.2 * (SizeH / 2))), New Point(SizeW, SizeH / 2 + (0.2 * (SizeH / 2))))
G.DrawLine(Pens.White, New Point(0, SizeH / 2 + (0.4 * (SizeH / 2))), New Point(SizeW, SizeH / 2 + (0.4 * (SizeH / 2))))
G.DrawLine(Pens.White, New Point(0, SizeH / 2 + (0.6 * (SizeH / 2))), New Point(SizeW, SizeH / 2 + (0.6 * (SizeH / 2))))
G.DrawLine(Pens.White, New Point(0, SizeH / 2 + (0.8 * (SizeH / 2))), New Point(SizeW, SizeH / 2 + (0.8 * (SizeH / 2))))


G.DrawLine(Pens.White, New Point(SizeW / 2 - (0.2 * (SizeW / 2)), 0), New Point(SizeW / 2 - (0.2 * (SizeW / 2)), SizeH))
G.DrawLine(Pens.White, New Point(SizeW / 2 - (0.4 * (SizeW / 2)), 0), New Point(SizeW / 2 - (0.4 * (SizeW / 2)), SizeH))
G.DrawLine(Pens.White, New Point(SizeW / 2 - (0.6 * (SizeW / 2)), 0), New Point(SizeW / 2 - (0.6 * (SizeW / 2)), SizeH))
G.DrawLine(Pens.White, New Point(SizeW / 2 - (0.8 * (SizeW / 2)), 0), New Point(SizeW / 2 - (0.8 * (SizeW / 2)), SizeH))
G.DrawLine(Pens.White, New Point(SizeW / 2 + (0.2 * (SizeW / 2)), 0), New Point(SizeW / 2 + (0.2 * (SizeW / 2)), SizeH))
G.DrawLine(Pens.White, New Point(SizeW / 2 + (0.4 * (SizeW / 2)), 0), New Point(SizeW / 2 + (0.4 * (SizeW / 2)), SizeH))
G.DrawLine(Pens.White, New Point(SizeW / 2 + (0.6 * (SizeW / 2)), 0), New Point(SizeW / 2 + (0.6 * (SizeW / 2)), SizeH))
G.DrawLine(Pens.White, New Point(SizeW / 2 + (0.8 * (SizeW / 2)), 0), New Point(SizeW / 2 + (0.8 * (SizeW / 2)), SizeH))
End If


If Me.chkTimeBackground.CheckState = CheckState.Checked Then
G.FillRectangle(Brushes.DarkOrchid, VideoDataX, VideoDataY, VideoDataW, VideoDataH)
G.FillRectangle(Brushes.Blue, 0, image.Height - VideoPositionSize.Height, VideoPositionSize.Width, VideoPositionSize.Height)
End If


If Me.chkDateTime.CheckState = CheckState.Checked Then
G.DrawString(VideoDateTime, VideoDataFont, Brushes.White, VideoDataX, VideoDataY)
G.DrawString(VideoPosition, VideoDataFont, Brushes.White, 0, image.Height - VideoPositionSize.Height)
End If


If Me.chkRecordVideo.CheckState = CheckState.Checked Then


Me.btnCapture.Enabled = False
Me.chkRecordVideo.Enabled = False
Me.comCodec.Enabled = False


Using B As New Bitmap(640, 480)
Using G2 As Graphics = Graphics.FromImage(B)
G2.DrawImage(image, 0, 0, 640, 480)
AVI_Writer.AddFrame(B)


End Using
End Using
End If


G.Dispose()