Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Conversione mm-pixel

  1. #1
    Utente di HTML.it L'avatar di karbu
    Registrato dal
    Jan 2001
    Messaggi
    406

    Conversione mm-pixel

    Premessa:
    Volendo visualizzare un codice a barre, si codificano i caratteri in una combinazione di barre bianche e nere alternate. Ciascuna barra è spessa un multiplo intero di una grandezza di riferimento. Nel mio programma l'utente può scegliere la dimensione in mm di questo riferimento.

    Il problema è che quando mi viene visualizzato il risultato, succede che le barre che dovrebbero avere lo stesso spessore (n volte il riferimento) hanno larghezze in pixel diverse. Suppongo che il problema sia nella conversione da mm in pixel. E temo che lo stesso avvenga nella stampa (nn ho ancora provato).

    Ho pensato quindi di convertire prima il riferimento in pixel e poi far svolgere le varie moltiplicazioni. Ma nn saprei come fare cn la stampa. E cmq nn ho ancora trovato il modo di convertire i mm in pixel, cosa che tra l'altro dovrebbe variare a secondo della risoluzione.
    Spero di esser stato chiaro.

    Avreste dei suggerimenti? Se nn si è capito, il VB mi è quasi sconosciuto
    The world is a vampire

  2. #2
    Utente di HTML.it L'avatar di mvent
    Registrato dal
    Jun 2002
    Messaggi
    230

    :-)

    inseriscilo in un form in cui hai messo un commandbutton e un textbox
    inserisci dei numeri nella textbox e poi pigia il commandbutton
    divertiti

    Private Sub Code3of9(sToCode As String, pPaintInto As Form, Y1 As Long, Y2 As Long)
    Dim sValidChars As String, sValidCodes As String
    Dim lElevate As Integer
    Dim lCounter As Long, lWkValue As Long, PosX As Long, PosY1 As Long, PosY2 As Long
    Dim TPX As Long

    TPX = Screen.TwipsPerPixelX

    sValidChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%*"
    sValidCodes = "41914595664727860970419025962647338417105957" + _
    "84729059950476626106644590602984801043246599" + _
    "62476744460260046477586109044686603224803443" + _
    "91860130478424477058030365265828235758580903" + _
    "65863556658042365383495434978353624150635770"

    sToCode = UCase(IIf(Left(sToCode, 1) = "*", "", "*") + sToCode + IIf(Right(sToCode, 1) = "*", "", "*"))
    PosX = ((((Me.Width / TPX) - (Len(sToCode) * 16)) / 2) * TPX) - 1
    PosX = PosX - 180
    PosY1 = Y1 'PosY1 = pPaintInto.Height * 0.2
    PosY2 = Y2 'PosY2 = pPaintInto.Height * 0.8

    If PosX < 0 Then
    MsgBox "The length of the code exceeds control limits.", vbExclamation, "Large string"
    GoTo End_Code
    End If

    On Error Resume Next

    For lCounter = 1 To Len(sToCode)
    'Here is where the number is fetched from the sValidCodes string. It will get only 5 digits.
    lWkValue = Val(Mid(sValidCodes, ((InStr(1, sValidChars, Mid(sToCode, lCounter, 1)) - 1) * 5) + 1, 5))
    lWkValue = IIf(lWkValue = 0, 36538, lWkValue)

    For lElevate = 15 To 0 Step -1
    'It evaluates the binary number to see if it has to draw a line.
    If lWkValue >= 2 ^ lElevate Then
    pPaintInto.Line (PosX, PosY1)-(PosX, PosY2)
    lWkValue = lWkValue - (2 ^ lElevate)
    End If
    PosX = PosX + TPX
    Next
    Next
    End_Code:
    End Sub

    Private Sub Command1_Click()
    Call Code3of9(Text1.Text, Me, 150, 1050)
    End Sub

  3. #3
    Utente di HTML.it L'avatar di karbu
    Registrato dal
    Jan 2001
    Messaggi
    406
    ti ringrazio per il suggerimento, ma sembra nn funzionare...
    The world is a vampire

  4. #4
    Utente di HTML.it L'avatar di mvent
    Registrato dal
    Jun 2002
    Messaggi
    230
    perchè?
    ho fatto una prova su un form
    a me funziona

    mi disegna sul form il codice a barra del numero inserito nella textbox..


    che errore ti dà ?

  5. #5
    Utente di HTML.it L'avatar di karbu
    Registrato dal
    Jan 2001
    Messaggi
    406
    scusa, sn stato precipitoso...
    di funzionare funziona, ma il ocdice che ne esce nn è "coerente", nel senso che se scrivo per esempio "555", mi da simboli diversi, invece dovrebbe ripetersi sempre la stessa sequenza di barre.
    The world is a vampire

  6. #6
    Utente di HTML.it L'avatar di mvent
    Registrato dal
    Jun 2002
    Messaggi
    230

    :-)

    ho fatto una prova e se guardi bene
    le tre sequenze ci sono.
    guarda in mezzo al codice a barre: ci sono tre sequenze uguali

    il numero si trova in mezzo al codice a barre
    ai lati ci sono delle barre che sono segni di convalida del codice.

    ho utilizzato questo programma con il lettore di codici a barre,
    e infatti ha sempre funzionato.



  7. #7
    Utente di HTML.it L'avatar di karbu
    Registrato dal
    Jan 2001
    Messaggi
    406
    Caspita che sbadato! Hai ragione! Domani lo faccio vedere agli "esperti" del mio gruppo

    Grazie!
    The world is a vampire

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Originariamente inviato da karbu
    Se nn si è capito, il VB mi è quasi sconosciuto
    Anche il Regolamento, per la verità.

    Il linguaggio e la versione vanno indicati anche nel titolo.

    Di cosa si tratta? VB6? VB.NET? VBA?

    Forniscimi questa informazione così apporto le dovute correzioni.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.