Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 19 su 19
  1. #11
    La cosa più saggia sarebbe usare le API di Windows e fare il BitBlt su un memory DC in cui sia stata selezionata una bitmap di dimensioni adeguate. Per poi poter gestire la faccenda tranquillamente in VB6 bisognerebbe convertire questa roba in una bitmap COM (di quelle restituite da LoadPicture), in modo che poi la si possa maneggiare agevolmente in VB.
    Purtroppo non ho la più pallida idea di come si faccia, anche se ci sarà sicuramente in qualche piega di MSDN dedicata ad OLE automation e a COM.
    Amaro C++, il gusto pieno dell'undefined behavior.

  2. #12
    Dunque, da quanto vedo tutto il trucco sta nell'usare OleCreatePictureIndirect per creare una StdPicture da un HBITMAP. Comunque questa roba è incapsulata in questa classe, che ti consiglio di usare.
    Ti basta creare un'istanza di tale classe, impostarne le dimensioni alle dimensioni dello schermo, effettuare il BitBlt sull'HDC che fornisce e quindi ottenere la StdPicture (che poi puoi assegnare alla proprietà Picture dei vari controlli) usando la property Picture.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #13
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da magnifico09
    Io non contesto niente.
    Se tu rispondi: Non è questo il punto , allora stai contestando.
    Almeno, in italiano funziona così.

    Originariamente inviato da magnifico09
    Tu mi hai detto non ti sei spiegato bene e io ho cercato di rispiegarti.
    Hai scritto un sacco di cose, ma se non QUOTI la parte del messaggio a cui rispondi, nessuno è in grado di capire a chi e a cosa ti riferisci.

    Per cui se non quoti la parte del messaggio a cui rispondi (come sto facendo io in questo post) è impossibile capire a chi ti rivolgi.

    Originariamente inviato da magnifico09
    Non è vero che non ho provato ad aumentare la picture.
    Allora scrivilo! Scrivi cosa ottieni, che problemi ti da, se da o no errore, se sì dove, etc. etc. etc.
    Bisogna strapparti le parole di bocca per aiutarti?

    Originariamente inviato da magnifico09
    Io ti ho risposto che non posso fare una picture grande come lo shermo. Altrimenti che senso a scusa.
    Prima di tutto: non è vero che non si può, si può eccome!
    Secondo: nel tuo primo post hai scritto (cito testualmente):
    vorrei che in una discreta picturebox mi faccia visualizzare tutto lo schermo compresa taskbar.
    La stessa cosa l'hai ribadita nel tuo posto che inizia (infelicemente) con:
    E allora dirlo prima no?
    Cioè, hai sempre asserito di voler catturare l'intero schermo .Invece adesso scrivi:
    che non posso fare una picture grande come lo shermo
    Per cui ti suggerisco di 'riflettere' sulle tue idee perchè le tue affermazioni sono nettamente in contrasto (o vuoi tutto lo schermo, o non lo vuoi).


    Comunque, per non tirarla lunga, il tuo problema è che imposti arbitrariamente (e nel modo sbagliato) la dimensione di destinazione nell'istruzione:
    BitBlt Picture1.hDC, 0, 0, 20000, 20000, hDC, 0, 0, vbSrcCopy

    Se vuoi catturare l'intera area dello schermo (come hai ripetutamente chiesto):
    1 ) Devi dimensionare il PictureBox sulle corrette dimensioni (come ti avevo suggerito al primo mio post ).
    codice:
        Picture1.Width = Screen.Width
        Picture1.Height = Screen.Height
    2 ) Catturi l'area impostando le dimensioni corrette:
    codice:
        BitBlt Picture1.hDC, 0, 0, Picture1.Width, Picture1.Height, hDC, 0, 0, vbSrcCopy
    Se poi vuoi/devi fare altro, allora devi spiegarti come si deve...

    Ehm...
    per caso: vuoi catturare l'intero schermo, ma poi fare lo stretch dell'immagine catturata?
    Nel qual caso devi usare il metodo PaintPicture(), oppure la funzione API StretchBtl().




    P.S.
    Spero tu abbia capito che il mio comportamento non è e non vuole esseere polemico, ma costruttivo .

  4. #14
    Utente bannato L'avatar di magnifico09
    Registrato dal
    Jun 2011
    Messaggi
    45
    Voliate scusarmi tutti, gibra ha trovato la parola che cercavo. Voglio catturare lo schermo e poi fare lo stretch dell'immagine catturata. Voglio ringraziare Gibra per avermi dato la parola Comunque a parte le congratulazioni. Come posso fare per "stretchare" l'immagine catturata??? Me lo ha detto Gibra come fare nella risposta precedente, ma se qualcuno mi potesse aiutare. Non voglio la pappa pronta sia chiaro, ma vorrei capirci. Ah chiedo umilmente scusa al forum, per avervi fatto perdere tempo prezioso.

  5. #15
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da magnifico09
    Come posso fare per "stretchare" l'immagine catturata?
    Ti ho indicato il metodo PaintPicture(), usa quello:

    1) Aggiungi un secondo PictureBox (Picture2)
    2) un terzo pulsante (Command3)
    3) copia questo codice:

    codice:
    Private Sub Command3_Click()
    
        Dim hWnd As Long
        Dim hDC As Long
        
        hWnd = GetDesktopWindow()
        hDC = GetWindowDC(hWnd)
        
        Picture1.Appearance = 0 ' Flat
        Picture2.Appearance = 0 ' Flat
        Picture1.AutoRedraw = True
        Picture2.AutoRedraw = True
        Picture2.Width = Screen.Width
        Picture2.Height = Screen.Height
        Picture1.Visible = True (*)
        Picture2.Visible = True (*)
    
        ' copio l'immagine catturata su Picture2
        BitBlt Picture2.hDC, 0, 0, Screen.Width, Screen.Height, hDC, 0, 0, vbSrcCopy
        Picture2.Picture = Picture2.Image ' rendo l'immagine persistente
        
        ' rimpicciolisco (stretch) l'immagine in base alle dimensioni di Picture1
        Picture1.PaintPicture Picture2, 0, 0, Picture1.Width, Picture1.Height, , , , , vbSrcCopy
        Picture1.Picture = Picture1.Image ' rendo l'immagine persistente
        
        ReleaseDC hWnd, hDC
    
    End Sub
    Ora il Command2 salverà l'immagine rimpicciolita.

    (*) Nota che ho impostato Visible=True per entrambi i PictureBox, ma è solo perchè tu possa vedere e capire cosa avviene, poi potrai nasconderle entrambe.


  6. #16
    Utente bannato L'avatar di magnifico09
    Registrato dal
    Jun 2011
    Messaggi
    45
    Gibra tu sei un genio. Proprio quello che volevo e per questo ti ringrazio. Ma se ora volessi aprire lo screen su una nuova picturebox ecco che rispunta il problema.Non sto contestando la tua ultima risposta gibra anzi apprezzo il tuo aiuto e di questo te ne sono grato. Però ora come posso fare per visualizzare lo screen completo su una picture? Mi spiego meglio. Mi fa lo screen e mi crea una immagine .bmp contenente lo screen avente taskbar. Ma appena lo apro su una picturebox devo estenderla su tutto lo schermo. E quindi torna il problemuccio di prima.

  7. #17
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Non capisco cosa intendi.

    E soprattutto quale sia il problema, visto che entrambe le dimensioni:
    1- in Picture1 hai l'immagine piccola.
    2- in Picture2 hai l'immagine grande.

    Devi spiegare lo scenario del tuo progetto, ovvero:
    -A cosa ti serve tutto questo lavoro?
    -Qual'è il tuo obbiettivo? Cosa ti prefiggi?

    Altrimenti rischiamo di sprecare post su post come avvenuto in precedenza senza capirci.


  8. #18
    Utente bannato L'avatar di magnifico09
    Registrato dal
    Jun 2011
    Messaggi
    45
    Nulla ora ho risolto potete chiudere

  9. #19
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da magnifico09
    Nulla ora ho risolto potete chiudere
    Ricordati quanto ti è stato detto qui.
    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.