Hej.
Jag håller på att utforma ett medlems register. Problemet ja har just nu är att om en medlem redan har en bild i programmet men vill byta så har ja 2 alternativ:
1. Bild från fil
2. Bild från webcamera.
Visst, det funkar utmärkt.
Men bara en gång. Vill ja sedan göra om detta på en annan medlem så måste jag starta om programet.
[ De hela funkar som så att bildens namn är desamma som medlemmens medlemsnummer, o då har ja lagt då att när texten ändrar sig i denna textbox så ska programmet kolla om där finns en fil med de namnet o i så fall ladda den.]
här e lite koder för formen som har hand om bilder från webbkameran
Public s As String = Form1.txtp.Text
Private Sub Formcam_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
s = Form1.txtp.Text
Form1.txtp.Text = "123"
Label1.Text = Form1.txtfm.Text & " " & Form1.txtem.Text
LoadDeviceList()
If lstDevices.Items.Count > 0 Then
MenuItem2.Enabled = True
lstDevices.SelectedIndex = 0
MenuItem2.Enabled = True
Else
lstDevices.Items.Add("No Capture Device")
MenuItem2.Enabled = False
End If
MenuItem3.Enabled = False
MenuItem1.Enabled = False
picCapture.SizeMode = PictureBoxSizeMode.StretchImage
End Sub
Private Sub Formcam_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Form1.txtp.Text = s
s = ""
Me.Dispose()
End Sub
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem1.Click
Dim data As IDataObject
Dim SAVE_PATH As String = Application.StartupPath & "\medlem"
Dim FileDialog As New Formspara
Dim fso = My.Computer.FileSystem
SendMessage(hHwnd, WM_CAP_EDIT_COPY, 0, 0)
data = Clipboard.GetDataObject()
If data.GetDataPresent(GetType(System.Drawing.Bitmap)) Then
bmap = CType(data.GetData(GetType(System.Drawing.Bitmap)), Image)
picCapture.Image = bmap
ClosePreviewWindow()
MenuItem1.Enabled = False
MenuItem3.Enabled = False
MenuItem2.Enabled = True
bmap.Save(SAVE_PATH & "\" & s & ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
End If
Dim pic1 As String = Application.StartupPath & "\medlem" & "\" & Form1.txtp.Text & ".jpg"
Try
If File.Exists(pic1) = True Then
Dim myimage As New Bitmap(pic1)
Form1.PictureBox1.Image = myimage
'Form1.txtp.Text = s
ElseIf File.Exists(pic1) = False Then
Form1.PictureBox1.Image = My.Resources.siluett3
End If
Catch ex As Exception
MsgBox(ex)
End Try
End If
End Sub
o här lite kod för formen som visar registret
Public s As String
Private Sub MenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem1.Click
s = txtp.Text
txtp.Text = "123"
fromfile()
End Sub
Public Sub fromfile()
Dim SAVE_PATH As String = Application.StartupPath & "\medlem"
Dim FileDialog As New OpenFileDialog
Dim fso = My.Computer.FileSystem
'Dim s As String = txtp.Text
'txtp.Text = "123"
With FileDialog
If Not fso.DirectoryExists(SAVE_PATH) Then
Try
fso.CreateDirectory(SAVE_PATH)
Catch ex As Exception
MessageBox.Show("Unable to create folder '" & SAVE_PATH.ToLower & _
"'. Images will be saved in '" & Application.StartupPath.ToLower & _
"'.", Text, MessageBoxButtons.OK, MessageBoxIcon.Warning)
SAVE_PATH = Application.StartupPath
End Try
End If
.InitialDirectory = SAVE_PATH
.Filter = "All Graphic Files|*.bmp;*.gif;*.jpg;*.jpeg;*.png;|" & _
"Graphic Interchange Format (*.gif)|*.gif|" & _
"Portable Network Graphics (*.png)|*.png|" & _
"JPEG File Interchange Format (*.jpg;*.jpeg)|*.jpg;*.jpeg|" & _
"Windows Bitmap (*.bmp)|*.bmp"
.FilterIndex = 1
.FileName = ""
'Label13.Text = Application.StartupPath & "\Saved\" & fso.GetName(.FileName)
If .ShowDialog = Windows.Forms.DialogResult.OK Then
If .FileName.ToUpper = (SAVE_PATH & "\" & fso.GetName(.FileName)).ToUpper Then
MessageBox.Show("The file '" & fso.GetName(.FileName).ToLower & "' cannot be copied onto itself.", _
Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
ElseIf fso.FileExists(SAVE_PATH & "\" & fso.GetName(.FileName)) Then
Dim Response As DialogResult
Response = MessageBox.Show("The file '" & fso.GetName(.FileName).ToLower & "' already exist in the destination folder '" & _
SAVE_PATH & "'" & vbCrLf & vbCrLf & "Do you want to overwite it?", Text, MessageBoxButtons.YesNo, _
MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
If Response = Windows.Forms.DialogResult.No Then Exit Sub
End If
Try
fso.CopyFile(.FileName, SAVE_PATH & "\" & s & ".jpg", True)
Catch ex As Exception
MessageBox.Show(ex.Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End If
End With
'Dim SAVE_pontus As String = Application.StartupPath & "\medlem" & "\" & TextBox1.Text & ".jpg"
'Dim myImage As New Bitmap(SAVE_pontus)
'PictureBox1.Image = myImage
Dim pic As String = Application.StartupPath & "\medlem" & "\" & txtp.Text & ".jpg"
Try
If File.Exists(pic) = True Then
Dim myimage As New Bitmap(pic)
PictureBox1.Image = myimage
'txtp.Text = s
ElseIf File.Exists(pic) = False Then
PictureBox1.Image = My.Resources.siluett3
End If
Catch ex As Exception
MsgBox(ex)
End Try
txtp.Text = s
s = ""
End Sub
>>> Textboxen för medlemsnumret <<<
Private Sub TextBox11_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtp.TextChanged
pic = Application.StartupPath & "\medlem" & "\" & txtp.Text & ".jpg"
Try
If File.Exists(pic) = True Then
Dim myimage As New System.Drawing.Bitmap(pic)
Dim img As Image = myimage
PictureBox1.Image = img
ElseIf File.Exists(pic) = False Then
PictureBox1.Image = My.Resources.siluett3
End If
Catch ex As Exception
MsgBox(ex)
End Try
End Sub
någon som har någon ide till varför de bara funkar en gång..
Edit: ja! Jag får 2 error som lyder:
1. När ja ska försöka ersätta en andra bild med bild från webbkameran så får jag: Ett allmänt fel uppstod i GDI+.
2. När jag försöker ersätta en andra bild med redan befintlig fil så får jag : Åtkomst nekad, Filen "sökväg" används av en annan prosess
nr 1 förstår ja inte så mkt av. gissar på att den är typ samma som nr 2.
men nr 2 borde inte ge error eftersom ja ändrar texten i textbox11 så hittar den ingen bild på de namnet o laddar då en bild från resources. så där borde inte var någon annan process som använder filen när ja ska ersätta den.