Gå til innhold

Anbefalte innlegg

Skrevet

Hallo igjen. Har nå startet på et prosjekt hvor jeg trenger en virkelig gjennomsiktig bakgrunn i en Panel, og ikke pseudo-løsningen som transparency key er. Når jeg søkte om dette på google hadde 90% av treffene på den første siden denne løsningen på problemstillingen:

protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x20;
return cp;
}
}

protected override void OnPaintBackground(PaintEventArgs e)
{}

Problemet er at jeg ikke vet hvordan jeg kan la dette gjelde en spesifik panel, hvordan gjør jeg dette?

Videoannonse
Annonse
Skrevet

Hvorfor trenger du egentlig gjennomsiktig panel? kan du ikke bare tegne det du skal på kontrollen under, så vil det se ut som et gjennomsiktig panel, og da kan du få til ganske fine effekter med LinearGradient eller lignende.

Skrevet (endret)

Det blir veldig kronglete, ettersom jeg da hadde blitt nødt til tegne på flere kontroller, og disse tegningene ville måtte samsvare med hverandre.

Edit: Hva er forresten Linear Gradient?

Endret av Velena
Skrevet

Container_Paint(object sender, PaintEventArgs e)
{
 foreach(Control c in (sender as Control).Controls)
 {
e.Graphics.DrawRectangle(Pens.Black, new Rectangle(c.Bounds.Left / 4, c.Bounds.Top / 4, c.Bounds.Width + 8, c.Bounds.Height + 8));
 }



}

 

LinearGradient er akkurat hva det hoeres ut som :) det er en bruswh for aa lage overganger.

 

Men jeg vet ikke om noen maate aa laget paneler hvor de selektivt er gjennomsiktige.

 

Men kan du ikke sette backgroundcolor lik Control paa de som skal vaere ugjennomsiktige, og Transparent paa de som skal vaere gjennomsiktige?

Skrevet

Er det ikke en farge under Web som heter Transparent? Tror jeg brukte den som "bakgrunnsfarge" på noen lables en gang fordi de var oppå et bilde. og da ble det jo ikke så pent med control bakgrunn på de labelene.

Skrevet
Er det ikke en farge under Web som heter Transparent? Tror jeg brukte den som "bakgrunnsfarge" på noen lables en gang fordi de var oppå et bilde. og da ble det jo ikke så pent med control bakgrunn på de labelene.

Det stemmer, men den fargen gjør ikke noe som helst etter min mening. Skjønner ikke hvorfor de kaller den fargen transparent en gang. Jeg også har behov for å få til transparent. Enkleste eksempel er å lage en bakgrunn med flere farger og sette en label over. Ser helt dustete ut. Skjønner ikke hvorfor dette skal være så vanskelig...

Skrevet (endret)

.NET finnes utenfor Windows Forms ;)

 

Color.Transparent heter det fordi Alpha kanalen er satt til null, hvis du prøver å fylle en rektangel med Brushes.Transparent eller en SolidBrush med Color.Transparent så vil ingenting tegnes.

 

Forresten kan dere se om det hjelper å slenge inn en

SetStyle(ControlStyles.SupportsTransparentBackColor, true);

i Constructoren til kontrollen deres.

Endret av GeirGrusom
Skrevet

ok.

Men siden .NET er så ufattelig komplett, hvorfor kan da ikke .NET også inneholde en property som heter transparent, som gjør at bakgrunnsfargen i kontrollen er gjennomsiktig. Burde jo være mulig det.

Skrevet (endret)
ok.

Men siden .NET er så ufattelig komplett, hvorfor kan da ikke .NET også inneholde en property som heter transparent, som gjør at bakgrunnsfargen i kontrollen er gjennomsiktig. Burde jo være mulig det.

det er jeg helt enig i. og synes også det burde vært enklere å lage vinduer uten ramme for eksempel. men men :) mulig dette er enklere med WPF?

Endret av Svish
Skrevet

nei jeg nevnte å bruke den Web.Transparent fargen som bakgrunn i controls som labels for eksempel. Det fjerner vel hverken vindusrammen eller bakgrunnen i selve programmet? eller gjør det det?

Skrevet

Constructorer er funksjoner med samme navn som kontrollen

For eksempel

 

public class MyTransparentPanel : Control
{
 MyTransparentPanel()
 {
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
BackColor = Color.Transparent;
 }
}

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...