AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Grafik Programmierung

Ein Thema von Contace · begonnen am 23. Okt 2018 · letzter Beitrag vom 1. Nov 2018
Antwort Antwort
Seite 11 von 12   « Erste     91011 12      
Contace

Registriert seit: 22. Okt 2018
44 Beiträge
 
#101

AW: Grafik Programmierung

  Alt 29. Okt 2018, 18:08
Hallo Harry Stahl,

ich versuche den code besser zu verstehen und habe dazu noch einige Fragen.

Du hast 2 Circle ein inneren als rand ?

Den äußeren für die Zahlen selber ?

Du hast quasi die nummern entlang des äußeren Cicle kopiert ?


Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#102

AW: Grafik Programmierung

  Alt 29. Okt 2018, 20:47
Ja, das hast Du richtig verstanden.

Allerdings möchte ich mich den Anmerkungen einiger Anderer hier anschließen und Dir doch raten, dass Du Dich zunächst einmal mit den Grundlagen der Programmierung und der Pascal-Sprache beschäftigst. Auf Amazon findest Du einiges (Stichwörter etwa wie Grundkurs Pascal, Delphi Programmierung, etc.).

Leider gibt es kein Buch, welches einen Grundkurs zur Programmierung mit dem aktuellen Delphi unter direkter Verwendung von FMX anbietet (jedenfalls kenne ich keines), insofern wird da nichts anderes übrig bleiben, als erst mal mit der VCL das Wesentliche zu Pascal und Delphi zu lernen.

Evtl. kann hier jemand anderes noch ein gutes Buch für den Einstieg empfehlen.
  Mit Zitat antworten Zitat
Contace

Registriert seit: 22. Okt 2018
44 Beiträge
 
#103

AW: Grafik Programmierung

  Alt 29. Okt 2018, 21:49
Harry Stahl,

ja das seh ich genauso, nur ohne referenz werd ich nicht viel lernen können.

Ich bin mittlerweile auf visual umgestiegen zur graphikprogrammierung gibt es da genug bücher.

Allerdings hab ich ein problem, ich weiß nicht warum der Kreis nicht ganz rum geht.


Grüße

Code:
protected override void OnPaint(PaintEventArgs e)
    {
        Graphics g = e.Graphics;
        SetScale(g);
        DrawFace(g);
        base.OnPaint(e);
    }
    private void InitializeComponent()
    {
        this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
        this.ClientSize = new System.Drawing.Size(800, 600);

    }

    [STAThread]
    static void Main()
    {
        Application.Run(new DrawStringAlignACircle());
    }

    private void SetScale(Graphics g)
    {
        g.TranslateTransform(Width / 2, Height / 2);

        float inches = Math.Min(Width / g.DpiX, Height / g.DpiX);

        g.ScaleTransform(inches * g.DpiX / 2000, inches * g.DpiY / 2000);
    }

    private void DrawFace(Graphics g)
    {
        Brush brush = new SolidBrush(ForeColor);
        Font font = new Font("Arial", 15);

        float x, y;

        const int numHours = 100;
        const int deg = 360 / numHours;
        const int FaceRadius = 700;

        for (int i = 1; i <= numHours; i++)
        {
            x = GetCos(i * deg + 90) * FaceRadius;
            y = GetSin(i * deg - 90) * FaceRadius;

            StringFormat format = new StringFormat();
            format.Alignment = StringAlignment.Center;
            format.LineAlignment = StringAlignment.Center;

            g.DrawString(i.ToString(), font, brush, -x, -y, format);

        }
        brush.Dispose();
        font.Dispose();
    }

    private static float GetSin(float degAngle)
    {
        return (float)Math.Sin(Math.PI * degAngle / 180f);
    }

    private static float GetCos(float degAngle)
    {
        return (float)Math.Cos(Math.PI * degAngle / 180f);
    }

}
Miniaturansicht angehängter Grafiken
circle.jpg  

Geändert von Contace (29. Okt 2018 um 22:40 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#104

AW: Grafik Programmierung

  Alt 29. Okt 2018, 22:25
nur ohne referenz werd ich nicht viel lernen können.
Deshalb mein Hinweis auf F1: Dahinter verbirgt sich die Online-Hilfe, welche recht gut als Referenz dient.

Zitat:
Ich bin mittlerweile auf visual umgestiegen zur graphikprogrammierung gibt es da genug bücher.
Und sicherlich auch Foren, in denen dir dann weit besser geholfen werden kann als in diesem Delphi-Forum.

Zitat:
Allerdings hab ich ein problem, ich weiß nicht warum der kreis nicht gefüllt wird und wie ich den zirkel verdoppeln kann.
Mit gefüllt meinst du vermutlich, dass die Zahlen nicht ganz rum gehen. Das wird daran liegen, dass du "deg" als "int" deklarierst, und der dabei entstehende Rundungfehler nachher mit multipliziert wird. Das sollte fast sicher als "float" deklariert werden. (Lernen was welche Typen können und wofür man sie einsetzt lohnt sich in allen Sprachen!)

Was du mit "Zirkel verdoppeln" meinst erschließt sich mir nicht wirklich.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Contace

Registriert seit: 22. Okt 2018
44 Beiträge
 
#105

AW: Grafik Programmierung

  Alt 29. Okt 2018, 22:44
Hallo Medium,

danke für den Hinweis, es funktioniert super.

Ich meinte wie ich mehrere Kreise mit nummern bekomme.


Grüße

Geändert von Contace (29. Okt 2018 um 22:51 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#106

AW: Grafik Programmierung

  Alt 29. Okt 2018, 23:05
Das gleiche nochmal, nur mit anderem FaceRadius. Spiel einfach mal etwas mit den Zahlen herum die da so verteilt in "deinem" Code stehen und schau was sie machen. Rumfummeln ist auch eine super Lernmethode!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Contace

Registriert seit: 22. Okt 2018
44 Beiträge
 
#107

AW: Grafik Programmierung

  Alt 29. Okt 2018, 23:06
Was meintest Du mit das gleiche nochmal ?

Anderes problem ist ich weiß nicht wie ich die abstände rein bekomme und die linien dazu

Grüße



Code:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

public class DrawStringAlignACircle : System.Windows.Forms.Form
{
    private System.ComponentModel.Container components = null;

    public DrawStringAlignACircle()
    {
        InitializeComponent();
        BackColor = SystemColors.Window;
        ForeColor = SystemColors.WindowText;
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        Graphics g = e.Graphics;
        SetScale(g);
        DrawFace(g);
        base.OnPaint(e);
    }
    private void InitializeComponent()
    {
        this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
        this.ClientSize = new System.Drawing.Size(800, 600);

    }

    [STAThread]
    static void Main()
    {
        Application.Run(new DrawStringAlignACircle());
    }

    private void SetScale(Graphics g)
    {
        g.TranslateTransform(Width / 2, Height / 2);

        float inches = Math.Min(Width / g.DpiX, Height / g.DpiX);

        g.ScaleTransform(inches * g.DpiX / 2000, inches * g.DpiY / 2000);
    }

    private void DrawFace(Graphics g)
    {
        Brush brush = new SolidBrush(ForeColor);
        Font font = new Font("Arial", 20);

        float x, y;

        const float kreis = 90;
        const float deg = 360 / kreis;


        const float FaceRadius = 800;

        for (int i = 1; i <= kreis; i++)
        {
            x = GetCos(i * deg + 90) * FaceRadius;
            y = GetSin(i * deg - 90) * FaceRadius;

            StringFormat format = new StringFormat();
            format.Alignment = StringAlignment.Center;
            format.LineAlignment = StringAlignment.Center;

            g.DrawString(i.ToString(), font, brush, -x, -y, format);

        }
        brush.Dispose();
        font.Dispose();
    }

    private static float GetSin(float degAngle)
    {
        return (float)Math.Sin(Math.PI * degAngle / 180f);
    }

    private static float GetCos(float degAngle)
    {
        return (float)Math.Cos(Math.PI * degAngle / 180f);
    }

}

Geändert von Contace (29. Okt 2018 um 23:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#108

AW: Grafik Programmierung

  Alt 29. Okt 2018, 23:40
Na das ist ja mal eine Reise, wenn man sich alles von vorne durchliest.
Kreis in Delphi, Kinokarten, Visual, wie wo was, wieder zu Delphi weils ein Beispiel gab um 50 Posts später wieder auf Visual zu gehen.
Solange Du Dich wohl fühlst, darauf finde ich kommt es am meisten an, ist ja alles geregelt, egal in welcher Sprache.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Contace

Registriert seit: 22. Okt 2018
44 Beiträge
 
#109

AW: Grafik Programmierung

  Alt 29. Okt 2018, 23:44
Hallo KodeZwerg,

ja ich habe anfangs probleme gehabt aber ich denke visual ist super.

Allerdings kann ich mich hier nicht von dem Forum trennen, es ist das beste...


Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#110

AW: Grafik Programmierung

  Alt 30. Okt 2018, 09:12
Warum ignorierst du jeden Ratschlag erstmal die Grundlagen zu lernen?
Du hast doch in dieser ganzen Odyssee nur Code aus Tutorials abgeschrieben und wenn etwas nicht geklappt hat, hast du die Hände in die Luft geworfen und "Hilfe" geschrieen und den Code einfach so abgeändert wie der nächste Beitrag dir das empfohlen hat.
Es kann dich nicht eine ganze Foren-Community Zeile für Zeile durch deinen Code begleiten - so läuft das nicht
Ich verstehe auch ehrlich gesagt nicht warum Leute dir hier überhaupt noch Quelltext diktieren...

Sein "Visual" Code ist z.B. zu 100% einfach von hier abgeschrieben:
http://www.java2s.com/Tutorial/CShar...ongacircle.htm
(abgesehen von 2 Werten die er bei sich geändert hat..)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (30. Okt 2018 um 09:16 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 11 von 12   « Erste     91011 12      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz