2013-04-04 13 views
7

Quando ho impostato un Image per riempire la finestra, sembra che esegua il rendering sulla parte superiore degli altri controlli e in genere crei disordine nel dipingere la finestra. L'ordine nel file non sembra essere d'aiuto, tuttavia se lo metto all'interno della sua sezione Page, si comporta meglio con lo piccolo.È possibile avere un'immagine di sfondo a finestra intera in un tema di masterizzazione?

C'è un modo per visualizzare un'immagine dietro tutto nella finestra?

Inoltre, gli altri controlli non sembrano eseguire correttamente il rendering sopra di esso correttamente (il testo ha uno sfondo bianco, i pulsanti hanno riquadri bianchi), immagino che abbiano bisogno di una modalità trasparente impostata da qualche parte?


Edit:

Ecco un esempio del problema, il pulsante e casella di controllo è diventato visibile da passaggio del mouse, e il testo da selezionare:

problem image

risposta

8

Non sono riuscito a ottenere lo Image come sfondo per funzionare, tuttavia sono riuscito a ottenere ciò che volevo utilizzando lo sfondo della finestra.

Il Window consente di utilizzare un'immagine specificata nella Theme/@ImageFile, e quindi specificare le Window/@SourceX e Window/@SourceY offset a 0. Tuttavia questo non è sufficiente, come i Window s fa riferimento sfondo dei caratteri sostituiranno finestra dell'immagine di sfondo. È necessario utilizzare un carattere senza uno sfondo specificato.

 
<Theme xmlns="http://wixtoolset.org/schemas/thmutil/2010" 
    ImageFile="background.png"> 
    <Window Width="485" Height="300" HexStyle="100a0000" 
     FontId="0" SourceX="0" SourceY="0">#(loc.Caption)</Window> 
    <Font Id="0" Height="-12" Weight="500" 
     Foreground="000000" 
            
 
  
             Background="FFFFFF"
            
 >Segoe UI</Font> 

Ci sono altri due problemi che ho avuto per aggirare:

  • Le caselle di controllo dont obbedire al colore di sfondo, ma questo è a causa del controllo wixstdba comune utilizza, basta avere a che fare con esso.
  • Il testo di avanzamento cambia ma non ha il suo sfondo ridipinto, quindi si disegna su se stesso, aggira dandogli uno sfondo.

dialog with background image

+0

La tua soluzione è stata molto utile. Grazie! Mi piacerebbe sapere come hai avuto a che fare con le checkbox? Anche se imposto che il font sia trasparente, finisce comunque con un backgound bianco. Lo stesso per i controlli ipertestuali e il testo della barra di avanzamento. Qual è il tuo modo per aggirare questo? Hai detto di dargli uno sfondo. Puoi per favore approfondire su questo? – Thracian

+0

Hey @Thracian, un po 'in ritardo, ma quello che ho fatto è stato semplicemente accettare la casella di controllo così com'è (probabilmente aggirarla nell'immagine) e impostare il colore di sfondo del carattere utilizzato per il testo di avanzamento anche per avere uno sfondo bianco. – redwyre

4

Sì, è possibile . Se si dispone di un'immagine statica uguale per tutte le pagine del tema, è possibile inserire l'elemento Image sopra tutti gli elementi della pagina. Se lo si desidera, se si desidera uno sfondo per pagina diverso, inserire prima l'immagine nella pagina. Organizzo il mio tema in questo modo:

<Theme> 
    <Window /> 
    <Font /> <!-- as many as necessary --> 

    <Image /> <!-- global background image --> 

    <Page> <!-- repeat for each page --> 
     <Image /> <!-- per-page background image --> 
     <other controls /> 

L'ordine degli elementi di controllo definisce l'ordine Z al contrario. Il primo controllo è in basso e i controlli in basso da lì si impilano in cima. Ecco perché lo sfondo Image deve essere il primo.

Per quanto riguarda il testo trasparente, è possibile con diversi livelli di bontà. Innanzitutto per eliminare lo sfondo bianco, è necessario rimuovere l'attributo Background dall'elemento Font utilizzato per il testo trasparente. Un attributo Background assente significa utilizzare il pennello null per il testo, che è essenzialmente trasparente.

I livelli di trasparenza della bontà dipendono dal controllo. Le caselle di controllo non sembrano mai rispettare il testo trasparente. Inoltre, il testo trasparente non funziona bene se viene ridisegnato. Vedrai il vecchio testo lasciato alle spalle. Quindi la trasparenza funziona solo su Text che non viene aggiornato.

In ogni caso, si spera che quanto sopra sia iniziato. Se desideri contribuire a migliorare la trasparenza o il tema, ti consiglio di dare un'occhiata al codice in src\dutil\thmutil.cpp. Forse puoi capire come farlo funzionare alla perfezione.

+0

Lol mi chiedevo perché questo era uno dei pochi posti al t'net che ha una comprensione esplicita dei temi per Wix. Dovevo sapere che era uno dei contributori lol! Grazie Rob. – penderi

+0

Frequento tre posti: il mio blog su http://robmensching.com/blog/, la mailing list [email protected] e il tag 'wix' di StackOverflow. :) –

+1

Questo non funziona per me, inizialmente l'immagine viene disegnata dall'alto, sebbene quando si sposta il mouse intorno ai controlli si ridisegna sull'immagine. Aggiungerò alcune immagini ed esempi per thmviewer domani. – redwyre

3

Ho appena scoperto un campo chiave quando si tenta di tema WIX.

Visible = "yes"

non significa l'elemento visibile. Significa che l'elemento è sempre visibile. In ogni pagina.