Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Semplice programma per acquisire BMP

    Ciao a tutti sono nuovo del forum e mi sono flippato con una cosa che boh credo sia davvero una banalità ma io davvero non sono in grado di farla...siccome spesso e volentieri mi capita di stampare lo schermo su file (tramite il tasto stampa risorse di sistema) e sono una persona moooolto pigra :-P credo sia un procedimento breve ma stufoso a lungo andare aprire paint incollare e salvare il file...so che ci sono dei programmi appositi ma volevo sapere se c'è un modo di fare un piccolo programmino in C che quando lanciato mi stampa lo schermo e lo salva automaticamente su file magari mettendolo in una cartella che specifico io? non sono molto pratico con la programmazione in C sarei grato a chiunque volesse darmi due dritte o magari indirizzarmi su qualke cosa gia fatta ( dato che io ho cercato ma non ho trovat molto che somigliasse a quello che devo fare)...lo so sono un flippato...ma ero curioso di fare una cosetta carina....ahahah Grazie a tutti vi auguro una buona giornata serata mattinata...tutto!! :-P ciaoooo

  2. #2
    In realtà non è così banale... ti devi studiare un po' di API GDI di Windows.
    In particolare, devi ottenere le dimensioni dello schermo (GetSystemMetrics per il monitor primario, oppure EnumDisplayDevices, CreateDC, GetDeviceCaps), ottenere un DC al dispositivo di input (GetDC(NULL) per il solo schermo primario, tieni i DC ottenuti con CreateDC prima se vuoi supportare più schermi), creare un device context compatibile per l'output (CreateCompatibleDC), creare una DDB delle dimensioni corrette compatibile con il DC di origine (CreateCompatibleBitmap), copiare l'immagine dal DC sorgente a quello di destinazione (BitBlt) e rilasciare i vari DC (ma non la bitmap).
    A questo punto puoi ottenere il contenuto della bitmap con GetDIBits, chiamandola una prima volta con NULL per lpvBits per ottenere le informazioni sull'header della bitmap; alloca quindi la memoria necessaria per la bitmap, inizializza correttamente la struttura BITMAPINFOHEADER che sta all'inizio del blocco di memoria, e richiama nuovamente GetDIBits (passandole stavolta un puntatore alla memoria allocata).
    A questo punto dovrebbe bastare scrivere il contenuto di quest'area di memoria su file per ottenere la bitmap desiderata.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3

    MMMMMMmmmmmm

    Moolto bene, innanzi tutto ti ringrazio per la risposta anche se non proprio alla mia portata, non ho capito quasi una fava, looolz. credevo fosse qualcosa di molto più semplice, non riesci mica ad indirizzarmi su qualke programmino gia fatto che poi posso solamente modificare come voglio...!? Grazie mille ancora buona serata ciauuu

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Re: MMMMMMmmmmmm

    Originariamente inviato da Gianzark
    Moolto bene, innanzi tutto ti ringrazio per la risposta anche se non proprio alla mia portata, non ho capito quasi una fava, looolz. credevo fosse qualcosa di molto più semplice, non riesci mica ad indirizzarmi su qualke programmino gia fatto che poi posso solamente modificare come voglio...!? Grazie mille ancora buona serata ciauuu
    Questo tipo di richieste non sono ammesse su questo forum.
    La richiesta di codice pronto (sia da produrre, che già pronto) non è ammessa dal regolamento interno.

    Se quanto da te richiesto è fuori dalla tua portata, consiglio di postare nel forum "Offro Lavoro / Collaborazione" dove vengono prese in carico, appunto, anche proposte di collaborazione.

    In alternativa, puoi effettuare una ricerca con Google.


    Devo chiudere qui la discussione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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 © 2024 vBulletin Solutions, Inc. All rights reserved.