Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

WPF 4.5: integrazione grafica Win32 migliorata

Sebbene anche nelle versioni precedenti di WPF fosse possibile integrare elementi grafici Win32 all'interno di elementi WPF, in passato esisteva il problema del cosiddetto air space. Sostanzialmente, secondo la logica dell'air space, ogni elemento ha un suo spazio che non può prevaricare quello degli altri.

Tradotto in altri termini e semplificando al massimo la questione, elementi Win32 che venivano integrati con WPF fino alla v. 4.0 non potevano subire alcune azioni tipiche di WPF stessa, ad esempio gli oggetti Win32 integrati non potevano essere sottoposti all'utilizzo di oggetti Transform o di oggetti Brush.

Per capire come cambiano le cose in WPF 4.5, possiamo ricorrere al controllo WebBrowser che apparentemente è nativo di WPF ma in realtà è un wrapper della controparte Win32. Quindi possiamo scrivere qualcosa di questo tipo:

    <UniformGrid Columns="2" x:Name="grid">
        <WebBrowser x:Name="_webBrowser" Source="http://www.visual-basic.it" Margin="5" Opacity="0.6">
            <WebBrowser.RenderTransform>
                <ScaleTransform ScaleX="0.5" ScaleY="0.5" />
            </WebBrowser.RenderTransform>
        </WebBrowser>
        <Rectangle Margin="5">
            <Rectangle.Fill>
                <VisualBrush Visual="{Binding ElementName=_webBrowser}" />
            </Rectangle.Fill>
        </Rectangle>
    </UniformGrid>

Il rendering viene poi controllato dalle seguenti due nuove proprietà dell'oggetto HWndHost:

  • IsRedirected che, se True, stabilisce che l'HwndHost può condividere l'air space tra WPF e Win32
  • CompositionMode, che permette di stabilire la modalità con cui l'air space viene condiviso (None, OutputOnly dove la condivisione è ammessa ma l'utente non può agire sul contenuto hostato, Full dove la condivisione è ammessa e l'utente ha pieno accesso al contenuto hostato).

Così facendo, laddove aveste necessità di integrare dei contenuti grafici di tipo Win32, sappiate che ora potete sfruttarli ancora meglio anche dal punto di vista delle trasformazioni.

Alessandro

Print | posted on lunedì 20 febbraio 2012 18:11 | Filed Under [ Windows Presentation Foundation ]

Powered by:
Powered By Subtext Powered By ASP.NET