vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
Re: Alphablend-Funktion langsam bei Bild_X > Bild_Y 
Autor: hydox
Datum: 23.02.13 12:46

Danke für die schnelle Antwort. Ich hänge mal das wichtigste mit ran, wenn das so einfach geht, bin neu hier

Declaration der API:
' GdiAlphaBlend: Windows NT/2000/XP/Vista: Included in Windows 2000 and later.
Public Declare Function GdiAlphaBlend Lib "gdi32" (ByVal hdcDest As Long, _
  ByVal XDest As Long, ByVal YDest As Long, ByVal WidthDest As Long, _
  ByVal HeightDest As Long, ByVal hdcSrc As Long, ByVal xSrc As Long, _
  ByVal ySrc As Long, ByVal WidthSrc As Long, ByVal HeightSrc As Long, _
  ByVal Blendfunc As Long) As Long
Public PicBreite As Long ' Bildbreite
Public PicHoehe As Long ' Bildhöhe
Public Bildpfad As String
Public TempBild As StdPicture
'======================================================
 
Beim Laden der Datei und des verwendeten Hintergrundbildes die Berechnung des _
  Seitenverhältnisses, nach der dann die Picturegröße festgelegt wird:
 
Public Sub Bildanpassung()
If Len(Bildpfad) > 0 And X_echt > 0 And Y_echt > 0 Then
    'Seitenverhältnisse feststellen:
    RatioRahmen = Picture3.ScaleWidth / Picture3.ScaleHeight _
      'Formseitenverhältnis Bildrahmen
    RatioPic = X_echt / Y_echt 'Bildseitenverhältnis
    Ratio = RatioPic / RatioRahmen 'Bild-zu-Form Verhältnis
 
    If Ratio < 1 Then Picture1.Height = Picture3.ScaleHeight: Picture1.Width = _
      Picture1.Height * RatioPic
    If Ratio >= 1 Then Picture1.Width = Picture3.ScaleWidth: Picture1.Height = _
    Picture1.Width / RatioPic
    Picture1.Top = Picture3.Top + (Picture3.Height / 2 - Picture1.Height / 2)
    Picture1.Left = Picture3.Left + (Picture3.Width / 2 - Picture1.Width / 2)
 
    Set TempBild = LoadPicture(Bildpfad) ' Bild laden
 
    With Picture2
        PicBreite = Picture1.ScaleWidth 'Bildbreite
        PicHoehe = Picture1.ScaleHeight 'Bildhöhe
        .Move 0, 0, PicBreite, PicHoehe 'Größe anpassen
        .PaintPicture TempBild, 0, 0, PicBreite, PicHoehe 'Positionierung und 
        ' Größe (Stretch) Bild in Picture2
    End With
    Call HScroll1_Scroll
    Set TempBild = LoadPicture() 'Speicher freigeben
    If Picture1.Visible = False Then Picture1.Visible = True
 
    Label21.Caption = "Kleinste Auflösung: " & Format(X_echt / Picture1.Width, _
      "0.00") & " mm"
End If
End Sub
'======================================================
 
'Bildhelligkeitsblendfunktion direkt vor dem Linienzeichnen:
    Alphawert = HScroll1.Value
    With Picture1
        .DrawWidth = 1
        .DrawStyle = 0
        .BackColor = vbWhite
    Call GdiAlphaBlend(.hDC, 0, 0, PicBreite, PicHoehe, Picture2.hDC, 0, 0, _
      PicBreite, PicHoehe, &H10000 * Alphawert)
        '.Refresh 'nicht notwendig, so auch kein Bildflackern
    End With
'======================================================
Hoffe, dass jemand die Muse hat, da was zu sehen, wär schön, danke schon mal. Micha
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Alphablend-Funktion langsam bei Bild_X > Bild_Y3.645hydox23.02.13 11:56
Re: Alphablend-Funktion langsam bei Bild_X > Bild_Y2.037ModeratorMartoeng23.02.13 12:09
Re: Alphablend-Funktion langsam bei Bild_X > Bild_Y2.072hydox23.02.13 12:46
Re: Alphablend-Funktion langsam bei Bild_X > Bild_Y1.941Zardoz23.02.13 16:51
Re: Alphablend-Funktion langsam bei Bild_X > Bild_Y2.102hydox24.02.13 08:51

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel