Gå til innhold

Anbefalte innlegg

Vår alles kjære Aadnk har laget et genialt, lite program som gjør at man får mye mer leselig kode i kjente og kjære farger når man poster kode.

 

Jeg foreslår at vi alltid bruker dette programmet til posting av kode, så blir det lettere å lese og forstå (synes iallfall jeg).

 

Hva er enklest?

 

Dim FormG As Graphics = Me.CreateGraphics 'Get a Graphics Object from the form
Dim i As New Bitmap(pnlAbs.Width - 4, pnlAbs.Height - 4, FormG) 'Create a bitmap from that graphics
Dim memG As Graphics = Graphics.FromImage(i) 'Create a Graphics object in memory from that bitmap
Dim HDC1 As IntPtr = FormG.GetHdc 'get the IntPtr's of the graphics
Dim HDC2 As IntPtr = memG.GetHdc 'get the IntPtr's of the graphics
BitBlt(HDC2, -pnlAbs.Location.X - 2, -pnlAbs.Location.Y - 2, pnlAbs.Width + pnlAbs.Location.X - 2, pnlAbs.Height + pnlAbs.Location.Y - 2, HDC1, 0, 0, 13369376) 'get the picture
FormG.ReleaseHdc(HDC1) 'Clean Up
memG.ReleaseHdc(HDC2) 'Clean Up
FormG.Dispose() 'Clean Up
memG.Dispose() 'Clean Up 

 

Eller

Dim FormG As Graphics = Me.CreateGraphics 'Get a Graphics Object from the form

Dim i As New Bitmap(pnlAbs.Width - 4, pnlAbs.Height - 4, FormG) 'Create a bitmap from that graphics

Dim memG As Graphics = Graphics.FromImage(i) 'Create a Graphics object in memory from that bitmap

Dim HDC1 As IntPtr = FormG.GetHdc 'get the IntPtr's of the graphics

Dim HDC2 As IntPtr = memG.GetHdc 'get the IntPtr's of the graphics

BitBlt(HDC2, -pnlAbs.Location.X - 2, -pnlAbs.Location.Y - 2, pnlAbs.Width + pnlAbs.Location.X - 2, pnlAbs.Height + pnlAbs.Location.Y - 2, HDC1, 0, 0, 13369376) 'get the picture

FormG.ReleaseHdc(HDC1) 'Clean Up

memG.ReleaseHdc(HDC2) 'Clean Up

FormG.Dispose() 'Clean Up

memG.Dispose() 'Clean Up

 

Programmet finner du i posten nedenfor. :)

 

Edit: Huffda, en skrivefeil...

Endret av moskus
Lenke til kommentar
Videoannonse
Annonse

For å lage programmer som tegner, pleier jeg å gjøre slik:

Public Interface IDrawObject

 Property Location As Point

 Property Size As Point

 Sub Draw(g As System.Drawing.Graphics)

End Interface

 

' Neste linje ligger i formen

Public Sub DrawItem(item As IDrawObject, g As System.Drawing.Graphics)

 Dim mat As System.drawing.Drawing2D.Matrix = g.Transorm.Clone()

 g.TranslateTransform(item.Location.X, item.Location.Y)

 item.Draw(g);

 g.Transform = mat

End Sub

 

Private Sub Form_Paint(Sender As Object, e As PaintEventArgs)

 For Each IDrawObject item In m_object_list

   item.Draw(e.Graphics)

 Next

End Sub

 

Dette er selvsagt en generell regel, og ikke kode som ville fungert, uten at IDrawObject blir implementert.

 

Men hvis du legger tegne prosedyren i Paint event(og bruker e.Graphics framfor CreateGraphics()), vil ikke skjermen flimre, dette er det samme som GetPaintDC i C/C++

Endret av GeirGrusom
Lenke til kommentar

Jeg ser på kodeeksempelet at programmet ikke fargelegger det siste nøkkelordet i en linje. Etter å ha studert applikasjonen, har jeg funnet utav problemet - det skulle ligge oppdatert ute på hjemmesiden min (link ovenfor).

 

Skjønt jeg ser òg at enkelte nøkkelord knyttet til VB .NET ikke fargelegges. Noen som vet hvilke nøkkelord som bør legges til for at koden skal støtte denne versjonen av Visual Basic (nåværende vises i Keywords.vbs)?

Lenke til kommentar

Du har glemt AndAlso, OrElse og Property

 

' New key-words in VB.NET

Convert.AddKeyWord "Char"

Convert.AddKeyWord "Int16"

Convert.AddKeyWord "Int32"

Convert.AddKeyWord "Int64"

Convert.AddKeyWord "UInt16"

Convert.AddKeyWord "UInt32"

Convert.AddKeyWord "UInt64"

Convert.AddKeyWord "DateTime"

Convert.AddKeyWord "Char"

Convert.AddKeyWord "Implements"

Convert.AddKeyWord "Inherits"

Convert.AddKeyWord "Protected"

Convert.AddKeyWord "Overloads"

Convert.AddKeyWord "Default"

Convert.AddKeyWord "MyBase"

Convert.AddKeyWord "Interface"

Convert.AddKeyWord "Implements"

Convert.AddKeyWord "Class"

Convert.AddKeyWord "MustInherit", "NotInheritable"

Convert.AddKeyWord "Overrides", "MustOverride", "NotOverridable", "Overridable"

Convert.AddKeyWord "Shadows"

Convert.AddKeyWord "Delegate"

Convert.AddKeyWord "Handles"

Convert.AddKeyWord "Try", "Catch", "Finally", "Throw"

Convert.AddKeyWord "Shared"

Convert.AddKeyWord "TypeOf"

Convert.AddKeyWord "AddHandler"

Convert.AddKeyWord "Auto"

Convert.AddKeyWord "GetType"

Convert.AddKeyWord "Unicode"

Convert.AddKeyWord "ReadOnly"

Convert.AddKeyWord "WriteOnly"

Convert.AddKeyWord "MyClass"

Convert.AddKeyWord "DirectCast"

Convert.AddKeyWord "Imports"

Convert.AddKeyWord "Decimal"

 

tror det er de fleste...

Endret av GeirGrusom
Lenke til kommentar

De er nå implementert. :)

 

Jeg har òg omskrevet koden en smule, slik at den produserer mer likeledes utdata - den forrige versjonen hadde enkelte problemer med overflødige linjeskift. Dette er fikset.

 

Applikasjonen kan som alltid lastes ned her.

Lenke til kommentar

Vel, jeg kan jo godt forsøke å få laget utvidelser til Internet Explorer (usj) eller FireFox, men jeg vet ikke helt om det gagner med automatisk formatering. De aller fleste som kommer til å benytte dette programmet, er sannsynligvis kyndige gjengangere på VB-formet, og vet således om god kodeformatering.

 

Kommer tilbake med oppdateringer dersom jeg greier å lage meg en utvidelse.

Lenke til kommentar

Etter meget slit og strev, greide jeg saktens å lage en utvidelse til Internet Explorer. Først og fremt måtte jeg omskrive prosjektet og dele det opp i to - selve EXE-filen og en DLL-fil som kan nås av andre applikasjoner. Dernest måtte jeg forsøke å få implementert et element i høyreklikmenyen til tekstbokser, hvorved utklippstavlens innhold skulle bli konvertert og deretter lagt inn i tekstboksen.

 

Likegyldig om du skal benytte deg av dette eller ei, må du dessverre kjøre filen Install.bat for at applikasjonen i det hele tatt skal kunne eksekveres. Dersom du òg ønsker å legge inn utvidelsen til Internet Explorer, må du kjøre Install.vbs innunder Extensions - Internet Explorer.

Lenke til kommentar

Jepp, det er jo egentlig nokså ironisk. :!:

 

Problemet er at FireFox har gjort det, etter min mening, litt vanskeligere å legge inn utvidelser, hvilket har ført til at jeg ennå ikke har laget ferdig FireFox-versjonen. Blant annet må jeg òg oversette VBScript til JavaScript, samt omskrive enkelte linjer som kun fungerer for IE.

 

Men, jeg skal nok få det unnagjort.

Lenke til kommentar

Dette så jo svært lovende ut! :)

 

*Teste*

 

Edit: Det fungerer jo perfekt!! Kjempe bra jobba, aadnk!

Dim Weapon As Long

Dim Armor As Long

Dim Strength As Long

Dim Vitality As Long

Dim Magical As Long 

 

Edit: Ser ut som det er et par bugs der.

Koder på en linje fungerer dårlig, og noen ganger må jeg legge koden nederst i tekstboksen for at det skal fungere.

 

Edit: I tillegg kommer noen ganger gamle koder frem.

Endret av Jonas
Lenke til kommentar
  • 2 uker senere...

Det var en kar som lurte på om det var lett å lage OpenGL i Visual Basic.NET, på grunnlag av dette laget jeg en liten fil for VB.NET som implementerer OpenGL relativt enkelt, så jeg tenkte kankje noen andre ville ha glede av det, dermed legger jeg med OpenGL Demo (som er et Visual Basic.NET program)

 

Den bruker OpenGLContext, som bare trengs å bindes til en kontrol, HDC eller lignende

 

Det ligger med en Texture klasse også, men hvorfor den ikke fungerer har jeg faktisk ikke peiling på, ingen feilmelding, det bare skjer ingenting... kankje noen andre klarer å finne ut av det?

OpenGLTest.zip

Lenke til kommentar
  • 3 uker senere...
  • 2 år senere...

Det ligger med en Texture klasse også, men hvorfor den ikke fungerer har jeg faktisk ikke peiling på, ingen feilmelding, det bare skjer ingenting... kankje noen andre klarer å finne ut av det?

 

Vel, prøvde å kjøre denne i VS2005 og den feiler på

 

def_tex.BindTexture()

 

Får beskjed om at objektet ikke er satt til en objeksforekomst. Ligger nok noe der...

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...