Autor Beitrag
-CrimeTime-
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55



BeitragVerfasst: Fr 10.12.10 23:47 
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:

ausblenden 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:

ausblenden 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:

ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: 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
Einloggen, um Attachments anzusehen!