Entwickler-Ecke

Multimedia / Grafik - Problem mit der ausrichtung von ">" beim Zeichnen auf Bitmap


-CrimeTime- - Fr 10.12.10 23:47
Titel: Problem mit der ausrichtung von ">" beim Zeichnen auf Bitmap
Hallo,

hier ein Bild des Problems:
user defined image

zum Problem:
das Blaue ist der Aktuelle Spieler und das Gelbe ist das Aktuelle Objekt, ich habe mich nun exakt in die Richtung gedreht wo das Objekt steht aber leider zeigt das ">" woanders hin, dazu hätte ich gerne das das Gelbe Object kein ">" besitzt sondern nur ein Gelber Punkt ist.

hier der Code womit das Object Gezeichnet wird:


C#-Quelltext
1:
RadarBitmap = DrawUnit(RadarBitmap, NodeColor, (LocalPlayer.XPos - CurrentObject.XPos) * RadarZoom + RadarWidth / 2, (LocalPlayer.YPos - CurrentObject.YPos) * RadarZoom + RadarHeight / 20, CurrentObject.Name);                    


und hier der Aktuelle Spieler:


C#-Quelltext
1:
RadarBitmap = DrawUnit(RadarBitmap, PlayerDeadColor, (LocalPlayer.XPos - CurrentObject.XPos) * RadarZoom + RadarWidth / 2, (LocalPlayer.YPos - CurrentObject.YPos) * RadarZoom + RadarHeight / 2, CurrentObject.Rotation, CurrentObject.Name);                    



hier die DrawUnit Funktion:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
private Bitmap DrawUnit(Bitmap img, Color UnitColor, float XPos, float YPos, float Rotation, string strName)
        {
            Graphics G = Graphics.FromImage(img);

            G.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

            SolidBrush RadarBrush = new SolidBrush(Color.White);
            Pen RadarPen = new Pen(UnitColor, 2F);

            Rotation = RadianToDegree(Rotation);

            G.ResetTransform();
            G.TranslateTransform(-XPos, -YPos, System.Drawing.Drawing2D.MatrixOrder.Append);
            try
            {
                G.RotateTransform(-Rotation, System.Drawing.Drawing2D.MatrixOrder.Append);
            }
            catch (ArgumentException)
            {
            }
            G.TranslateTransform(XPos, YPos, System.Drawing.Drawing2D.MatrixOrder.Append);
            try
            {
                G.FillEllipse(RadarBrush, XPos - 5 / 2, YPos - 5 / 255);
                G.DrawEllipse(RadarPen, XPos - 5 / 2, YPos - 5 / 255);
                G.DrawLine(RadarPen, XPos - 5, YPos + 2, XPos, YPos - 8);
                G.DrawLine(RadarPen, XPos + 5, YPos + 2, XPos, YPos - 8);
                G.DrawLine(RadarPen, XPos, YPos - 2, XPos, YPos - 8);
                DrawText(img, strName, Convert.ToInt32(XPos) - Convert.ToInt32((strName.Length) * 2.5), Convert.ToInt32(YPos) + 8);
            }
            catch (Exception ex)
            {

            }

            G.Dispose();
            RadarBrush.Dispose();
            RadarPen.Dispose();

            return img;

        }


Yogu - Fr 10.12.10 23:56

Hallo,

vorneweg: bitte benutze die Dateianhangs-Funktion dieses Forums, damit das Bild hier aufgehoben ist. Ich hab das mal nachgeholt:

skizze

user profile icon-CrimeTime- hat folgendes geschrieben Zum zitierten Posting springen:
ich habe mich nun exakt in die Richtung gedreht wo das Objekt steht aber leider zeigt das ">" woanders hin

Dann hast du entweder nicht neu gezeichnet oder in CurrentObject.Rotation steht nicht der korrekte Winkel. Da du nicht gezeigt hast, wie dieser berechnet wird, kann ich dir leider nicht weiterhelfen.

user profile icon-CrimeTime- hat folgendes geschrieben Zum zitierten Posting springen:
dazu hätte ich gerne das das Gelbe Object kein ">" besitzt sondern nur ein Gelber Punkt ist.

Na, dann zeichne doch nur einen Punkt. Zum Beispiel, indem du nur die erste FillEllipse-Anweisung durchfürhst.

Grüße,
Yogu