Results 1 to 4 of 4

Thread: Centerpoint GDI+ Gradientpath

  1. #1

    Centerpoint GDI+ Gradientpath

    ik probeer mijn met gdi+ getekende gradientpath juist in te stellen, maar ik krijg de focus niet juist ingesteld.
    Bij standaard tekenen met de volgende code:

    Delphi Code:
    1. Path := GDIPRoundRect(FLabelRect, Round(PageSettings.Radius * FOneUnit));
    2.     GBrush := TGPPathGradientBrush.Create(Path);
    3.     GBrush.CenterColor := TGPColor.Create(128, 0, 0, 0);
    4.  
    5.     SurCols[0].Initialize(TGPColor.CreateFromColorRef(Color));
    6.     SurCols[0].Alpha := 128;
    7.     GBrush.SetSurroundColors(SurCols);
    8.     GBrush.CenterPoint.Initialize;
    9.  
    10.     GBrush.SetFocusScales(0.8 , 0.8);

    krijg ik dit resultaat:
    Click image for larger version. 

Name:	gdi path.jpg 
Views:	95 
Size:	66.3 KB 
ID:	7512

    Als ik de center wil instellen lukt dat niet goed,

    Delphi Code:
    1. GBrush.CenterPoint := TGPPointF.Create(10, 10);

    Ik begrijp ook niet helemaal, met TGPPointF.Create moet ik daar de coördinaten invoeren die binnen de path rect liggen? of is dit schaal basis? iemand evt een voorbeeldje hoe het lukt.. Ik wil een kleur verloop maken van grijs naar achtergrond kleur (die als schaduw zal dienen) maar omdat hier een andere path overheen getekend gaat worden moet het brandpunt (Brush.CenterPoint) precies in het midden liggen.

  2. #2
    Wat gezocht op internet naar een oplossing.. Oplossing lag dichter bij dan ik dacht, ik dacht waarschijnlijk te moeilijk..

    Hier de code voor geïnteresseerden:
    Delphi Code:
    1. procedure TForm1.PaintBox1Paint(Sender: TObject);
    2. var
    3.   GRect     : TGPRect;
    4.   FGraphics : IGPGraphics;
    5.   SPen      : IGPPen;
    6.   SBrush    : IGPSolidBrush;
    7.   SColor    : TGPColor;
    8.   I : Integer;
    9. begin
    10.   FGraphics := TGPGraphics.Create(Paintbox1.Canvas.Handle);
    11.   FGraphics.SmoothingMode := SmoothingModeAntiAlias;
    12.   FGraphics.InterpolationMode := InterpolationModeHighQualityBicubic;
    13.   GRect  := TGPRect.Create(50, 50, 200, 200);
    14.   SBrush := TGPSolidBrush.Create(TGPColor.White);
    15.   for I := 1 to 20 do
    16.   begin
    17.     SColor := TGPColor.Black;
    18.     SColor.Alpha := 20 - I;
    19.     SPen := TGPPen.Create(SColor, I);
    20.     SPen.LineJoin := LineJoinRound;
    21.     FGraphics.DrawRectangle(SPen, GRect);
    22.   end;
    23.   FGRaphics.FillRectangle(SBrush, GRect);
    24. end;

    En hier het resultaat:
    Name:  glow effect.jpg
Views: 284
Size:  4.5 KB

    De truc zit hem dus niet in gradients en dergelijke, veel simpeler zelfs gewoon werken met de pen.. De oplossing stond hier:
    www.codeproject.com

  3. #3
    Blijft leuk. 'tekencode'.
    Wel zou ik er een offscreenbitmap van maken en de inhoud vanuit het geheugen direct in een keer naar de paintbox1.canvas kopiëren om flikkeren tegen te gaan.

  4. #4
    Hoe kan ik dat doen? Ik ben namelijk bezig met een componentset voor label (etiket) ontwerp. Maar ik teken altijd direct op de canvas (flikkeren) dus gebruik ik dubbelbuffered maar dat geeft soms nog flikkeringen / schaduwen..

    Misschien iemand interesse om mee te helpen om de code wat op orde te krijgen? Ik ben nu bezig met de editor (container) die de label zelf tekent, waar de rulers ook in staan, en die de selectie en onderdelen van de label zal tekenen. Dan wil ik een non-visual component maken die je hiermee kan koppelen voor opslag/laden van het label, en een non-visual component die de label rendert voor afdrukken/omzet naar zpl voor zebra printers.

    Er zijn genoeg label design programma's, maar wil voor mijn huidige werkgever een label ontwerp programma maken wat ik kan koppelen aan Dynamics AX en aan de productieplanning en Objective MES.
    Last edited by Reidinga; 25-Mar-17 at 16:17.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •