Gå til innhold

Anbefalte innlegg

Hvordan kan jeg bruke et bilde som fader ut i gjennomsiktig til bakgrunn i en form? Når jeg har laget et vanlig slikt bilde i photoshop, der kantene på en måte blir mer og mer gjennomsiktige utover. Men når jeg setter det som bakgrunn i formen, legger den enten bare hvit bakgrunn, eller eventuelt satt bakgrunnsfarge. Jeg har også prøvd å sette bakgrunnsfargen til "Transparent", men selv da lagte den hvit bakgrunn.

 

Så lurer jeg på en ting til, hvis jeg skal kunne flytte formen uten noen border, hvordan gjør jeg da? Jeg har sett noen programmer der du kan bare dra hvor du vil i formen(der det ikke er Controls), men klarer ikke helt å se for meg en enkel måte å gjøre dette på...

Lenke til kommentar
Videoannonse
Annonse

Du må gjøre så formen støtter gjennomsiktig bakgrunn.

Dette gjøres ved å legge til et flagg i CreateParams, tror jeg postet dette til noen andre her...

 

Du må bruke SetStyle() funksjonen i Constructoren.

Hvis System.Windows.Forms.ControlStyles.SupportsTransparentBackColor er satt til true, så kan kontrollen ha transparent bakgrunnsfarge.

 

using System.Windows.Forms;
public MyForm : Form
{
 public MyForm()
 {
   SetStyle(ControlStyles.SupportsTransparentBackColor,  true);
 }
}

 

Edit: neste spørsmål

 

Måten jeg flytter forms på uten border, er å legge til denne koden:

int xx;
int yy;

protected override OnMouseDown(object sender, MouseEventArgs e)
{
 // Hvis ikke disse blir satt, vil vinduet bli helt klikk
 xx = e.X;
 yy = e.Y;
}

protected override OnMouseMove(object sender, MouseEventArgs e)
{
 if(e.Button == MouseButtons.Left)
 {
   // Det vi gjør her, er å flytte vinduet like mye som brukeren flytter musa
   Location = new Point(Location.X + (e.X - xx), Location.Y + (e.Y - yy))
   xx = e.X; yy= e.Y;
 }
}

 

Edit2: Det viste seg at dette ikke funker, så derfor poster jeg noe jeg vet fungerer:

Legg til denne linjen HELT FØRST i Paint event, eller OnPaint:

e.Graphics.CopyFromScreen(Location, new Point(0, 0), Size);

 

Det den gjør, er å kopiere rett fra skjermen, og tegne det på bakgrunnen.

Da kan du ikke ha noe BackGround bilde, men du må tegne det selv.

Enkleste måten å gjøre det på, er å lege bildet til i resources.

 

Dette kan føre til problemer hvis man tegner mer enn én gang, så da burde man legge bakgrunnen i et BackBuffer (tegn bakgrunnen til et Bitmap når vinduet flyttes)

Endret av GeirGrusom
Lenke til kommentar

Det du skrev jeg skulle gjøre på det første: Dette har jeg allerede prøvd, men det blir allikevel tegnet hvit bakgrunn bak bakgrunnsbildet selv om bakgrunnen er satt til "Transparent".

 

Andre svaret: Jeg prøvde dette, men det gitt ikke helt som ønsket. Med en gang jeg begynte å dra formen rundt, begynte den å "riste". Den hoppet da frem og tilbake veldig fort mellom 2 posisjoner, og til mer jeg dro den rundt, desto større ble avstanden. Jeg kan sikkert prøve å få det til å gå mer smooth nå når jeg vet konseptet da...

Endret av strykejern
Lenke til kommentar

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...