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 / Forum översikt / inlägg

Posta nytt inlägg


Rita bild i en picturebox från en annan bild.

Postades av 2002-12-26 13:03:58 - Johan Nykvist, i forum vb.net, Tråden har 4 Kommentarer och lästs av 1674 personer

Ska göra en skins funktion till mitt program. Har tidigare programmerat VB6, men nu ska jag försöka mig på VB.net. I vb6 finns det ett api kommando som heter BitBlt som är väldigt bra till dessa syften. Men till VB.net verkar denna vara borttagen eller så vet jag ej hur jag ska göra. Har skummat runt lite på nätet och hittat en annan funktion som ska funka på liknande sätt. Men den är inte 100 %ig. Själva ritandet funkar bra. Men bilden fastnar inte för evigt. Så fort ett fönster kommer över mitt program så försvinner bilden och bilden måste ritas om. Då kan man ju tycka att det bara är att infoga samma kod i pant händelsen till pictureboxen. Detta gör att det blir ett ryckigt program. Jag vill att bilden ska ritas en gång och sedan ska den sitta där tills programmet stängs.

Jag hoppas att någon kan detta och kanske kan hjälpa mig att komma framåt.
Jag bifogar en länk till mitt exempel så får ni se. http://groups.msn.com/Johansfiler/Dokument/skins.zip

Naturligtvis funkar inte länken som jag trodde. Den funkar bara om man har ett passportkonto på MSN. Har laddat upp den i filarean så att ni kan se.
Sök på skins i filarean



Svara

Sv: Rita bild i en picturebox från en annan bild.

Postades av 2002-12-26 17:24:50 - Sven Åke Persson

Hej
Det borde räcka med att du ställer PictureBoxens propertie ClipControls = True
Kolla också AutoRedraw egenskapen sätt den till och från i lämpliga läge.
/Sven


Svara

Sv: Rita bild i en picturebox från en annan bild.

Postades av 2002-12-26 18:48:24 - Johan Nykvist

Ingen av dessa egenskaper finns i VB.Net. Egenskapen AutoRedraw hänvisar de i hjälpen att man ska använda Paint händelsen för att rita om bilden. Ska försöka att modifiera koden lite.


Svara

Sv: Rita bild i en picturebox från en annan bild.

Postades av 2002-12-27 02:44:10 - Andreas Hillqvist

Skapa en bitmap i önskad storlek och rita till den istället:
<code>
Sub SetImage(ByVal Destination As Graphics, ByVal X As Integer, ByVal Y As Integer, ByVal W As Integer, ByVal H As Integer, ByVal bmp As Bitmap, ByRef startX As Integer, ByRef StartY As Integer)
Dim src As New Rectangle(startX, StartY, W, H)

Destination.DrawImage(bmp, X, Y, src, GraphicsUnit.Pixel)

End Sub


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim antal As Integer
Dim Bitmap As Bitmap
Dim Source As Bitmap
Dim G As Graphics
Dim Width As Integer
Dim Height As Integer

Const antalHight = 10
Const antalWith = 5

Width = (antalWith * 25) + 275
Height = (antalHight * 29) + 20 + 38

Source = picSrcPlEdit.Image
Bitmap = New Bitmap(Width, Height)
G = Graphics.FromImage(Bitmap)

SetImage(G, 0, 0, 25, 20, Source, 0, 0) 'TL
SetImage(G, Width - 25, 0, 25, 20, Source, 153, 0) 'TR
For antal = 1 To antalHight
SetImage(G, 0, 20 + (antal - 1) * 29, 25, 29, Source, 0, 42) 'L
SetImage(G, Width - 25, 20 + (antal - 1) * 29, 25, 29, Source, 26, 42) 'R
Next
antal = 0

For antal = 1 To antalWith
SetImage(G, 100 + (antal * 25), Height - 38, 25, 38, Source, 179, 0) 'DM

Next

antal = 0
For antal = 1 To antalWith + 9
SetImage(G, antal * 25, 0, 25, 20, Source, 127, 0) 'DM
Next

SetImage(G, 0, Height - 38, 125, 38, Source, 0, 72) 'DL
SetImage(G, Width - 150, Height - 38, 150, 38, Source, 126, 72) 'DR
SetImage(G, (Width / 2) - 50, 0, 100, 20, Source, 26, 0) 'TM

G.Dispose

PictureBox1.Size = New Size(Width, Height)
PictureBox1.Image = Bitmap

End Sub
</code>


Svara

Sv: Rita bild i en picturebox från en annan bild.

Postades av 2002-12-27 18:39:07 - Johan Nykvist

Det var en bra ide. Nu har jag kommit en bra bit framåt. Jag fick modifiera Subrutinen SetImage. Destinationsbilden blev lite förstorad av någon anledning, jag fick lägga till någon rad.

<code>Sub SetImage(ByVal Destination As Graphics, ByVal X As Integer, ByVal Y As Integer, ByVal W As Integer, ByVal H As Integer, ByVal bmp As Bitmap, ByRef startX As Integer, ByRef StartY As Integer)
Dim src As New Rectangle(startX, StartY, W, H)
Dim dst As New Rectangle(X, Y, W, H) ‘Ny rad

'Destination.DrawImage(bmp, X, Y, src, GraphicsUnit.Pixel) bytte ut denna rad till den senare.
Destination.DrawImage(bmp, dst, src, GraphicsUnit.Pixel)
End Sub</code>


Sedan modifierade jag utterliggare för att kunna stretcha bilder. Det är bättre istället för att köra i loopar.


<code>Sub BitBlt(ByVal Destination As Graphics, ByVal X As Integer, ByVal Y As Integer, ByVal W As Integer, ByVal H As Integer, ByVal bmp As Bitmap, ByRef startX As Integer, ByRef StartY As Integer)
Dim src As New Rectangle(startX, StartY, W, H)
Dim dst As New Rectangle(X, Y, W, H)

Destination.DrawImage(bmp, dst, src, GraphicsUnit.Pixel)

End Sub

Sub StretchBlt(ByVal Destination As Graphics, ByVal X As Integer, ByVal Y As Integer, ByVal W As Integer, ByVal H As Integer, ByVal bmp As Bitmap, ByRef startX As Integer, ByRef StartY As Integer, ByRef SourceW As Integer, ByRef SourceH As Integer)
Dim src As New Rectangle(startX, StartY, SourceW, SourceH)
Dim dst As New Rectangle(X, Y, W, H)

Destination.DrawImage(bmp, dst, src, GraphicsUnit.Pixel)

End Sub

#End Region


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim antal As Integer
Dim Bitmap As Bitmap
Dim Source As Bitmap
Dim G As Graphics
Dim Width As Integer
Dim Height As Integer

Const antalHight = 6
Const antalWith = 8

Width = (antalWith * 25) + 275
Height = (antalHight * 29) + 20 + 38

Source = picSrcPlEdit.Image
Bitmap = New Bitmap(Width, Height)
G = Graphics.FromImage(Bitmap)

BitBlt(G, 0, 0, 25, 20, Source, 0, 0) 'TL
BitBlt(G, Width - 25, 0, 25, 20, Source, 153, 0) 'TR
BitBlt(G, 0, Height - 38, 125, 38, Source, 0, 72) 'BL
BitBlt(G, Width - 150, Height - 38, 150, 38, Source, 126, 72) 'BR



StretchBlt(G, 25, 0, Width - 50, 20, Source, 127, 0, 24, 20) 'TM
StretchBlt(G, 0, 20, 25, Height - 58, Source, 0, 42, 25, 28) 'L
StretchBlt(G, Width - 25, 20, 25, Height - 50, Source, 26, 42, 25, 28) 'R
StretchBlt(G, 125, Height - 38, Width - 275, 38, Source, 179, 0, 24, 38) 'BM


BitBlt(G, (Width / 2) - 50, 0, 100, 20, Source, 26, 0) 'Text TM

G.Dispose()

PictureBox1.Size = New Size(Width, Height)
PictureBox1.Image = Bitmap


End Sub</code>


Svara

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 159
27 952
271 704
805
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