Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Transparent Form i C#

Postad 2007-04-23 av Anders Eriksson i sektionen ASP.NET, C#, Okategoriserat med 2 Kommentarer | Läst av: 4096, Betyg: 85%

Förord

Artikeln handlar om hur man kan använda bilder för att designa utseendet på en Form. Detta sker via transparency , det vill säga genomskinlighet. Hur man kan låta användare flytta formen utan att använda namnlisten/titlebar, så den inte är låst i ett läge, behandlas även i artikeln.
Innehåll
  » Steg 1 – Skapa Projekt
  » Steg 2 – Bakgrund
  » Steg 3 – Gör formen flyttbar


Steg 1 – Skapa Projekt

Vi börjar med att skapa ett nytt WindowsApplication-projekt för C#. Skapa sedan en form, om det inte gjordes automatiskt. För att sedan kunna få transparency på formen behöver vi ändra egenskapen FormBorderStyle till None. Se även till att StartPosition och WindowState är inställt på CenterScreen respektive Normal. Title till valfri ?


Steg 2 – Bakgrund

Det första vi behöver är en design över hur vår form ska se ut. Detta inledande designsteg kan lösas med olika tekniker, till exempel med hjälp av GDI+ eller liknande, men jag tycker det är enklast att helt enkelt skapa en (eller flera) bild(er) av typen bmp, gif, jpg, med mera, som också används som bakgrund för formen. I detta exempel ska vi använda oss av nedan stående bild, av gif-format med storleken 323x166px.


Här vill vi uppnå en form med rundade hörn och bakgrunden är således klar. För att nu inte vita hörn ska ritas ut runt omkring bildens svarta ram, kan vi ställa in form-egenskapen TransparencyKey till valfri färg. Jag har valt att använda färgen Magenta på denna egenskap, mer känd som #FF00FF eller RGB (255,0255), som av tradition används för transparens inom programmering. Bilden har då förändrats till:


Då har vi en fullt fungerande transparant form och kan nu addera valfria kontroller. Här gäller det dock att se upp, om bakgrundsfärgen på kontrollen är den samma som TransparencyKey så kommer även den att bli transparant ?


Steg 3 – Gör formen flyttbar

Eftersom vi satt FormborderStyle till None har vi även tagit bort formens namnlist och således även den inbyggda funktionen för att flytta form med musen. Därför ska vi nu fixa detta manuellt. Det som behövs är tre händelser: när musknapp trycks ner, när musen flyttas och när musknapp släpps upp. Vi lägger till dessa för formen MouseDown, MouseMove och MouseUp, detta gör vi genom att öppna Events i Properties för formen och dubbelklicka för respektive event. Vi behöver en variable för om huruvida formen är i ”drag-läge” samt en variable för formens nuvarande koordinater.

private Boolean drag = false;
private Point currentPos = new Point();
// MouseDown
private void frmMain_MouseDown(object sender, MouseEventArgs e) {
drag = true;
currentPos = e.Location;
}

// MouseMove
private void frmMain_MouseMove(object sender, MouseEventArgs e) {
if (drag) {
Point newPos = this.PointToScreen(e.Location);
this.Location = new Point(newPos.X - currentPos.X, newPos.Y - currentPos.Y);
}
}
// MouseUp
private void frmMain_MouseUp(object sender, MouseEventArgs e) {
drag = false;
}


That’s it! Första steget är ner musknapp trycks ner då ställs drag till true och musens position sparas i currentPos. Sedan i funktionen MouseMove kontrolleras om drag är true, då räknas ut den nya positionen ut med hjälp av currentPos och musens nuvarande position. När slutligen musknappen släpps upp ställs drag till false.


Här ser vi en bild på formen där ett par kontroller har lagts till för att demonstrerar formen när den körs och som i övrigt, förutom transparanta effekten, beter sig som vilken ”vanlig” form som helst. Samma funktion som används för att göra flyttbar går givetvis att lägga till på vilken eller vilka kontroller man vill.
Det går även att specificera vilken knapp som ska styra dragningen, om man vill till exempel kunna flytta formen genom att högerklicka. Följande kod behöver ändras för MouseUp- och MouseDown-event.


private void frmMain_MouseUp(object sender, MouseEventArgs e) {
if (e.Button == MouseButtons.Left)
drag = false;
}
private void frmMain_MouseMove(object sender, MouseEventArgs e) {
if (drag) {
Point newPos = this.PointToScreen(e.Location);
this.Location = new Point(newPos.X - currentPos.X, newPos.Y - currentPos.Y);
}
}

Och där har vi det!
En ”egen-disgnad-flyttbar-form”, mycket nöje!


Ladda ner exempel projekt här
Upp

2 Kommentarer


  1. Johannes Strömberg
    7 maj 2007

    Om jag laddar ner ditt exempel och testar så blir det en fräsch magentaram runt allt även när jag kör det. Något är galet, antingen på min dator eller i projektet. Mycket intressant koncept dock. :)


  2. Jari Ivanoff
    14 dec 2007

    Men som Johannes säger: Jag får en vacker magenta ram runt formuläret.... Iofs så satte min Visual Studio "Transparent Key" till Fuchsia men jag ändrade till Magenta utan resultat.

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
1 187
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies