vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

Fortgeschrittene Programmierung
Re: RoundRect 
Autor: Zardoz
Datum: 26.11.07 19:43

Hallo Thomas,
probier mal dieses:
' Copyright © 2007 by Zardoz
' Controls: 1 * Picturebox
Option Explicit
 
Private Type PointAPI
  x As Long
  y As Long
End Type
 
Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As PointAPI, _
  ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As _
Long
Private Declare Function PaintRgn Lib "gdi32" (ByVal hdc As Long, ByVal hRgn As _
Long) As Long
 
Private Const ALTERNATE& = 1
Private Const Pi! = 3.14159265358979
 
Private Sub Form_Activate()
 
With Picture1
  .ScaleMode = vbPixels
  .AutoRedraw = True
  .BackColor = vbBlue
  .FillColor = vbYellow
  .FillStyle = vbFSSolid
  .Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
End With
DoEvents
Call RotateRoundRect(100, 100, 200, 150, 30, 35)
 
End Sub
 
Private Sub RotateRoundRect(XPos!, YPos!, Breite!, Hoehe!, Radius!, Winkel!) ' 
' Winkel in Altgrad
 
Dim CosW!, SinW!, XP!, YP!, i%, j%, N%, Z%, Wnk!, Rgn1&, Figur() As PointAPI
 
Wnk = Winkel * Pi / 180
SinW = Sin(Wnk)
CosW = Cos(Wnk)
N = Pi * Radius / 2
ReDim Figur(4 * N - 1)
Z = 0
For i = 0 To 3
  For j = N - 1 To 0 Step -1
    Wnk = Pi / 2 * (1 + j / N - i)
    XP = Radius * (1 + Cos(Wnk)) + Breite * (((i \ 2) Xor (i And 1)) - 0.5)
    YP = Radius * (1 - Sin(Wnk)) + Hoehe * ((i \ 2) - 0.5)
    Figur(Z).x = CosW * XP - SinW * YP + XPos + Breite / 2
    Figur(Z).y = SinW * XP + CosW * YP + YPos + Hoehe / 2
    Z = Z + 1
  Next j
Next i
Rgn1 = CreatePolygonRgn(Figur(0), 4 * N, ALTERNATE)
Call PaintRgn(Picture1.hdc, Rgn1)
Call DeleteObject(Rgn1)
Picture1.Refresh
 
End Sub

Gruss,

Zardoz

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
RoundRect1.280thilden26.11.07 15:17
Re: RoundRect875Zardoz26.11.07 15:54
Re: RoundRect848thilden26.11.07 16:41
Re: RoundRect897Zardoz26.11.07 17:43
Re: RoundRect839thilden26.11.07 17:49
Re: RoundRect916Zardoz26.11.07 19:43
Re: RoundRect843thilden26.11.07 22:06
Re: RoundRect849Zardoz26.11.07 22:39
Re: RoundRect859thilden26.11.07 23:52

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