Newsgroup: it.comp.lang.visual-basic
Titolo: Zoommare una porzione di video

Ciao a tutti,
Spero non sia una domanda trita e ritrita, ma non ho trovato nulla a
riguardo.
Mi piacerebbe ottenere un'effetto zoom su una porzione di video limitrofa al
cursore del mouse.
Qualcosa di simile al "Magnifier" di windows.
La mia richiesta č finalizzata a ottenere degli zoom su una specifica
regione di un controllo immagine.
Conoscete API o altro che possano fare al caso mio?
Vi ringrazio per eventuali consigli.
Ciao, Mauro

Dagli un'occhiata:
è un pezzetto di un vecchio test che ho fatto qualche anno fa.
Qualcosa che fa ul caso tuo ci dovrebbe essere.
ciao
ugo
Public Const CCHDEVICENAME = 32
Public Const CCHFORMNAME = 32
Type DEVMODE
        dmDeviceName As String * CCHDEVICENAME
        dmSpecVersion As Integer
        dmDriverVersion As Integer
        dmSize As Integer
        dmDriverExtra As Integer
        dmFields As Long
        dmOrientation As Integer
        dmPaperSize As Integer
        dmPaperLength As Integer
        dmPaperWidth As Integer
        dmScale As Integer
        dmCopies As Integer
        dmDefaultSource As Integer
        dmPrintQuality As Integer
        dmColor As Integer
        dmDuplex As Integer
        dmYResolution As Integer
        dmTTOption As Integer
        dmCollate As Integer
        dmFormName As String * CCHFORMNAME
        dmUnusedPadding As Integer
        dmBitsPerPel As Integer
        dmPelsWidth As Long
        dmPelsHeight As Long
        dmDisplayFlags As Long
        dmDisplayFrequency As Long
End Type
Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Declare Function EmptyClipboard Lib "user32" () As Long
Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal
hMem As Long) As Long
Declare Function CloseClipboard Lib "user32" () As Long
Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As
Long) As Long
Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject
As Long) As Long
Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long,
ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC
As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As
Long
Declare Function CreateDC Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName
As String, ByVal lpDeviceName As String, ByVal lpOutput As String,
lpInitData As Long) As Long
Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long,
ByVal nWidth As Long, ByVal nHeight As Long) As Long
Sub ScrnCap(Lt, Top, Rt, Bot)
    rWidth = Rt - Lt
    rHeight = Bot - Top
    SourceDC = CreateDC("DISPLAY", 0, 0, 0)
    DestDC = CreateCompatibleDC(SourceDC)
    BHandle = CreateCompatibleBitmap(SourceDC, rWidth, rHeight)
    SelectObject DestDC, BHandle
    BitBlt DestDC, 0, 0, rWidth, rHeight, SourceDC, Lt, Top, _
     &HCC0020
    Wnd = Screen.ActiveForm.hwnd
    OpenClipboard Wnd
    EmptyClipboard
    SetClipboardData 2, BHandle
    CloseClipboard
    DeleteDC DestDC
    ReleaseDC DHandle, SourceDC
End Sub

 Qualcosa che fa ul caso tuo ci dovrebbe essere.
Ci smacchinerò con grande attenzione :-)
Ti ringrazio e complimenti.
Ciao, Mauro

Qualcosa che fa ul caso tuo ci dovrebbe essere.
Scusa, ma lo trovo molto macchinoso e passare per la clipboard è quasi
sempre una cattiva idea.
Basta fare una StretchBlt() dell'hDC dello schermo (GetDC(0&)) delle
coordinate intorno al cursore (GetCursorPos()).
Ciao


Scusa tu, hai ragione.
Ogni tanto ricasco in un vecchio vizio: mon avevo tempo di controllare il
codice, sapevo che faceva qualcosa di simile e l'ho postato al volo...
Comunque può essere interessante dargli
un'occhiata per chi non ha mai usato Api e Clipboard.
ciao
ugo