Autore Topic: Funzioni equivalenti alle API BitBlt e StretchBlt di VB6  (Letto 1876 volte)

Offline Orionis

  • Gambero
  • **
  • Post: 58
    • Mostra profilo
    • BoxIdee
Ciao a tutti,
premetto che sto ancora studiando Gambas e ne avrò ancora per i prossimi mesi ( :hard:) , quindi non conosco ancora buona parte dei controlli e degli ambienti grafici.

Qualcuno sa se esistonto funzioni simili a quelle citate per copiare (ed elaborare) parti di immagini in un controllo PictureBox?
Grazie


Neanche gli Dei...possono nulla...contro la stupidità umana?

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Funzioni equivalenti alle API BitBlt e StretchBlt di VB6
« Risposta #1 il: 19 Maggio 2014, 02:02:06 »
.... esistonto funzioni simili a quelle citate per copiare (ed elaborare) parti di immagini in un controllo PictureBox?
Bella domanda ed anche stimolante.......


Per ora, relativamente al Bitblt ho trovato in giro questo suggerimento di carattere generale:

" If you want to perform the same operation on Linux, that BITBLT performs on Windows (which btw, stands for Bit Boundary Block Transfer),
you can use a the blit function provided by a game programming library called Allegro.
"
In tal caso, però, si tratta di fare una chiamata di funzioni esterne appartenenti alla suddetta libreria.


Ad ogni modo, dovresti vedere un po' tra i metodi forniti dalle Classi Image, Picture, Paint e Draw di Gambas, se c'è qualcosa di analogo.
« Ultima modifica: 19 Maggio 2014, 02:58:34 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Orionis

  • Gambero
  • **
  • Post: 58
    • Mostra profilo
    • BoxIdee
Re: Funzioni equivalenti alle API BitBlt e StretchBlt di VB6
« Risposta #2 il: 19 Maggio 2014, 11:10:35 »
.... esistonto funzioni simili a quelle citate per copiare (ed elaborare) parti di immagini in un controllo PictureBox?
Bella domanda ed anche stimolante.......


Per ora, relativamente al Bitblt ho trovato in giro questo suggerimento di carattere generale:

" If you want to perform the same operation on Linux, that BITBLT performs on Windows (which btw, stands for Bit Boundary Block Transfer),
you can use a the blit function provided by a game programming library called Allegro.
"
In tal caso, però, si tratta di fare una chiamata di funzioni esterne appartenenti alla suddetta libreria.


Ad ogni modo, dovresti vedere un po' tra i metodi forniti dalle Classi Image, Picture, Paint e Draw di Gambas, se c'è qualcosa di analogo.

Va bene, studio, sigh  :rolleyes:

Intanto, se posso, aggiungo un'altra domanda in qualche modo connessa: devo mostrare a video una parte di un'immagine, con la possibilità di scorrerla in H e V tramite scrollbar.
Ho visto che c'è il controllo ScrollView, dove pensavo di inserire la PictureBox da scrollare, ma non lo fa.
Qualche idea?

grazie
Neanche gli Dei...possono nulla...contro la stupidità umana?

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re: Funzioni equivalenti alle API BitBlt e StretchBlt di VB6
« Risposta #3 il: 19 Maggio 2014, 11:24:43 »

Ho visto che c'è il controllo ScrollView, dove pensavo di inserire la PictureBox da scrollare, ma non lo fa.
Qualche idea?

grazie


Così su due piedi ti posso dire che puoi usare refrefreh e wait. Però se desideri una risposta articolata e precisa, ammesso che io ne sia capace ma qualcuno qui sicuramente lo è, devi postare un esempio.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Funzioni equivalenti alle API BitBlt e StretchBlt di VB6
« Risposta #4 il: 19 Maggio 2014, 16:00:50 »
devo mostrare a video una parte di un'immagine, con la possibilità di scorrerla in H e V tramite scrollbar.
Ho visto che c'è il controllo ScrollView, dove pensavo di inserire la PictureBox da scrollare, ma non lo fa.

Per mostrare una "parte" di un'immagine puoi agevolmente utilizzare il metodo ".Resize()" della Classe Picture.


Riguardo all'altra questione, facciamo un semplice esempio.  :-X
Sul Form poniamo una ScrollView, all'interno della quale poniamo una piccola PictureBox. Si prevede in questo esempio di caricare un'immagine delle dimensioni in pixel: 720 x 1280 .
Quindi scriviamo questo codice:
Codice: gambas [Seleziona]
Public Sub Form_Open()

  Dim p As Picture
    
    
    With p = Picture.Load("/percorso/della/immagine/da/caricare")
' Prendiamo soltanto una "parte" dell'immagine:
      .Resize(PictureBox1.W, 300)
    End With
    
' Dimensioniamo ORA la "PictureBox":
    With PictureBox1
      .W = ScrollView1.W
      .H = ScrollView1.H + 100
    End With

' Carichiamo la "Picture" nella "PictureBox", che provvederà a mostrarla:
    PictureBox1.Picture = p
    
End
« Ultima modifica: 19 Maggio 2014, 17:24:08 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Orionis

  • Gambero
  • **
  • Post: 58
    • Mostra profilo
    • BoxIdee
Re: Funzioni equivalenti alle API BitBlt e StretchBlt di VB6
« Risposta #5 il: 19 Maggio 2014, 21:12:57 »
devo mostrare a video una parte di un'immagine, con la possibilità di scorrerla in H e V tramite scrollbar.
Ho visto che c'è il controllo ScrollView, dove pensavo di inserire la PictureBox da scrollare, ma non lo fa.

Per mostrare una "parte" di un'immagine puoi agevolmente utilizzare il metodo ".Resize()" della Classe Picture.
....

Grazie, ma ho scoperto che funziona come avevo immaginato...prima di proseguire, lasciatemi cantare:
Citazione
Gambas, ti amo poi ti odio poi ti amo, in un attimo tu...sei grande grande grande e le mie pene non me le ricordo più

Dopo varie prove da impazzire (per dirne una, ScrollView non visualizzava mai le scrollbar pur avendo inserito una picture molto più grande del contenitore), ho cancellato sia la Scroll che la Picture, poi le ho ricreate, con la stessa grande immagine di prima, et voilà...ecco a voi le scrollbar e l'immagine scorre che è una meraviglia.  :o
E' quindi meglio di VB dove avevo dovuto creare una procedure abbastanza complessa con BitBlt per ottenere la stessa funzionalità....grande!

Per altri versi, ti odio: leggo un file dati di VB, comma delimited, e il gambero non solo mi importa anche le virgolette di delimitazione delle stringhe, ma se trova una virgola nel testo letto racchiuso tra virgolette, la interpreta come delimitare di campo e .... casino!  :hatecomputer:

Per il momento ho risolto anche senza le API...alla prossima.

P.S. a breve posto un'altra domanda; avevo premesso che sono un GRP  :-[


Neanche gli Dei...possono nulla...contro la stupidità umana?