Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Der Code-Schnippsel-Thread
PacMani
Unregistered

 
Beitrag #121
Der Code-Schnippsel-Thread
Code:
/// <summary>
        /// Zeichnet das Bild mit Beachtung der inneren Abstände für gestrecktes Zeichnen.
        /// </summary>
        /// <param name="x">Koordinate auf der X-Achse.</param>
        /// <param name="y">Koordinate auf der Y-Achse.</param>
        /// <param name="width">Breite des Bildes in Pixel.</param>
        /// <param name="height">Höhe des Bildes in Pixel.</param>
        public void DrawMarginScaled(int x, int y, int width, int height)
        {
            // Ausschnitte aus der Textur
            int clippedX = _clipping.X + _margins.X;
            int srcVertR = _clipping.X + _clipping.Width - _margins.Width;
            int srcHorzB = _clipping.Y + _clipping.Height - _margins.Height;
            int srcInnerW = _clipping.Width - _margins.X - _margins.Width;
            int srcInnerH = _clipping.Height - _margins.Y - _margins.Height;
            Rectangle srcTl = new Rectangle(_clipping.X, _clipping.Y, _margins.X,     _margins.Y);
            Rectangle srcTm = new Rectangle(clippedX,    _clipping.Y, srcInnerW,      _margins.Y);
            Rectangle srcTr = new Rectangle(srcVertR,    _clipping.Y, _margins.Width, _margins.Y);
            Rectangle srcMl = new Rectangle(_clipping.X, _margins.Y,  _margins.X,     srcInnerH);
            Rectangle srcMm = new Rectangle(clippedX,    _margins.Y,  srcInnerW,      srcInnerH);
            Rectangle srcMr = new Rectangle(srcVertR,    _margins.Y,  _margins.Width, srcInnerH);
            Rectangle srcBl = new Rectangle(_clipping.X, srcHorzB,    _margins.X,     _margins.Height);
            Rectangle srcBm = new Rectangle(clippedX,    srcHorzB,    srcInnerW,      _margins.Height);
            Rectangle srcBr = new Rectangle(srcVertR,    srcHorzB,    _margins.Width, _margins.Height);

            // Zielbildschirmbereiche
            int dstVertL = x + _margins.X;
            int dstVertR = x + width - _margins.Width;
            int dstHorzT = y + _margins.Y;
            int dstHorzB = y + height - _margins.Height;
            int dstInnerH = height - _margins.Y - _margins.Height;
            int dstInnerW = width - _margins.X - _margins.Width;
            Rectangle dstTl = new Rectangle(x,        y,        _margins.X,     _margins.Y);
            Rectangle dstTm = new Rectangle(dstVertL, y,        dstInnerW,      _margins.Y);
            Rectangle dstTr = new Rectangle(dstVertR, y,        _margins.Width, _margins.Y);
            Rectangle dstMl = new Rectangle(x,        dstHorzT, _margins.X,     dstInnerH);
            Rectangle dstMm = new Rectangle(dstVertL, dstHorzT, dstInnerW,      dstInnerH);
            Rectangle dstMr = new Rectangle(dstVertR, dstHorzT, _margins.Width, dstInnerH);
            Rectangle dstBl = new Rectangle(x,        dstHorzB, _margins.X,     _margins.Height);
            Rectangle dstBm = new Rectangle(dstVertL, dstHorzB, dstInnerW,      _margins.Height);
            Rectangle dstBr = new Rectangle(dstVertR, dstHorzB, _margins.Width, _margins.Height);

            // Zeichnen
            _game.SpriteBatch.Draw(_texture, dstTl, srcTl, _color);
            _game.SpriteBatch.Draw(_texture, dstTm, srcTm, _color);
            _game.SpriteBatch.Draw(_texture, dstTr, srcTr, _color);
            _game.SpriteBatch.Draw(_texture, dstMl, srcMl, _color);
            _game.SpriteBatch.Draw(_texture, dstMm, srcMm, _color);
            _game.SpriteBatch.Draw(_texture, dstMr, srcMr, _color);
            _game.SpriteBatch.Draw(_texture, dstBl, srcBl, _color);
            _game.SpriteBatch.Draw(_texture, dstBm, srcBm, _color);
            _game.SpriteBatch.Draw(_texture, dstBr, srcBr, _color);
        }
:fresse:
15.01.2012 12:28
Diese Nachricht in einer Antwort zitieren
PacMani
Unregistered

 
Beitrag #122
Der Code-Schnippsel-Thread
Schon wieder so was unglaublich sinnvolles
Code:
/// <summary>
        /// Zeichnet den Text an der übergebenen Position mit optionaler Zentrierung um den
        /// Zeichnungspunkt.
        /// </summary>
        /// <param name="x">X-Koordinate, an dem der Text gezeichnet werden soll.</param>
        /// <param name="y">Y-Koordinate, an dem der Text gezeichnet werden soll.</param>
        /// <param name="text">Der zu zeichnende Text.</param>
        /// <param name="horizontalAlignment">Die horizontale Ausrichtung des Textes.</param>
        /// <param name="verticalAlignment">Die vertikale Ausrichtung des Textes.</param>
        public void Draw(float x, float y, string text,
            Alignment horizontalAlignment = Alignment.Near,
            Alignment verticalAlignment = Alignment.Near)
        {
            // Text zeilenweise zeichnen
            string[] lines = text.Split(newLineChars, StringSplitOptions.None);

            // Y-Startposition wegen vertikaler Zentrierung berechnen
            float yStart = y;
            if (verticalAlignment != Alignment.Near)
            {
                float height = _spriteFont.MeasureString(text).Y;
                if (verticalAlignment == Alignment.Center)
                {
                    yStart -= height / 2.0f;
                }
                else if (verticalAlignment == Alignment.Far)
                {
                    yStart -= height;
                }
            }
            
            // Text zeilenweise durchgehen und zeichnen
            for (int i = 0; i < lines.Length; i++)
            {
                // X-Startposition wegen horizontaler Zentrierung berechnen
                float xStart = x;
                if (horizontalAlignment == Alignment.Center)
                {
                    xStart -= _spriteFont.MeasureString(lines[i]).X / 2.0f;
                }
                else if (horizontalAlignment == Alignment.Far)
                {
                    xStart -= _spriteFont.MeasureString(lines[i]).X;
                }

                // Text zeichnen
                _game.SpriteBatch.DrawString(_spriteFont, lines[i], new Vector2(xStart, yStart),
                    _color);
                yStart += _spriteFont.LineSpacing;
            }
        }
17.01.2012 19:04
Diese Nachricht in einer Antwort zitieren
PacMani
Unregistered

 
Beitrag #123
Der Code-Schnippsel-Thread
Ein Klassiker aus dem Windows-Quellcode:

00618 //
00619 // Define timer table size.
00620 //
00621 // N.B. The size of the timer table must be less than or equal to 256 and a
00622 // power of 2 in size.
00623
00624 #define TIMER_TABLE_SIZE 512

So programmiert man heute!
(Dieser Beitrag wurde zuletzt bearbeitet: 28.01.2012 17:46 von oreissig.)
28.01.2012 12:24
Diese Nachricht in einer Antwort zitieren
chiaki Offline
Die Pommesfee

Beiträge: 12.534
Registriert seit: Jul 2008
Beitrag #124
Der Code-Schnippsel-Thread
wenns läuft?
28.01.2012 14:01
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
PacMani
Unregistered

 
Beitrag #125
Der Code-Schnippsel-Thread
Kann einen Überlauf verursachen. Wurde aber schon lange behoben ;)
28.01.2012 14:01
Diese Nachricht in einer Antwort zitieren
pETe! Offline
*

Beiträge: 911
Registriert seit: Jul 2008
Beitrag #126
Der Code-Schnippsel-Thread
Earm, und was hat das dann hier verloren? Ist wohl eher was für den UIT?
28.01.2012 15:43
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
PacMani
Unregistered

 
Beitrag #127
Der Code-Schnippsel-Thread
Für den was?
28.01.2012 15:46
Diese Nachricht in einer Antwort zitieren
Xaar Online
Wahnsinnige Geschwindigkeit - und los!

Beiträge: 26.207
Registriert seit: Jul 2009
Beitrag #128
Der Code-Schnippsel-Thread
"Unnötige Informationen-Thread"

«Ich verstehe Ihre Frage so: Dass es Menschen gibt, die wünschen, dass ein solches OS als "Retro-OS" bezeichnet wird, ja? Mir ist nicht bekannt, dass solche Absichten bestehen, da HP-UX 9.x einfach ein altes OS ist. Niemand hat die Absicht, ein "Retro-OS" zu bauen.» Xaar, 2014

Prozessor gesucht? -> Prozessoren, die ich abgeben kann (unter "Available for trading")
"Überschüssige" Prozessoren oder Hardware? -> Einfach PN an mich schicken b1 -> Hardware, die ich suche
28.01.2012 15:56
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
PacMani
Unregistered

 
Beitrag #129
Der Code-Schnippsel-Thread
Ja da passt es wohl noch besser rein. Obwohl es ja auch ein Codeschnippsel ist.
28.01.2012 18:35
Diese Nachricht in einer Antwort zitieren
SnGtKs Offline
DEXTER

Beiträge: 1.616
Registriert seit: Jul 2008
Beitrag #130
Der Code-Schnippsel-Thread
hmm mal wieder ein bissel qbasic ... was aus nem alten proggi von mich ... aus irgend einem basic buch soweit ich noch weiss ...

Code:
CONST mwst% = 19
'für die Anschrift
DIM name$, strasse$, plz$, ort$
'fr die Artikel
DIM artikel1$, artikel2$, artikel3$
DIM anzahl1%, anzahl2%, anzahl3%
DIM preis1!, preis2!, preis3!
'Rechenfelder
DIM gesamt1!, gesamt2!, gesamt3!
DIM sumpreis!, sumgesamt!, mehrwert!

'Adresse eingeben
CLS
PRINT "Bitte geben Sie die Anschrift des Kunden ein"
PRINT
PRINT
INPUT "Name:    ", name$
INPUT "Strasse: ", strasse$
INPUT "PLZ:     ", plz$
INPUT "Ort:     ", ort$

'Artikel eingeben
CLS
PRINT "Bestellung eingeben für " + name$
PRINT
PRINT "Artikel 1"
INPUT "Artikel: ", artikel1$
INPUT "Anzahl:  ", anzahl1%
INPUT "Preis:   ", preis1!
gesamt1! = anzahl1% * preis1!
PRINT
PRINT "Artikel 2"
INPUT "Artikel: ", artikel2$
INPUT "Anzahl:  ", anzahl2%
INPUT "Preis:   ", preis2!
gesamt2! = anzahl2% * preis2!
PRINT
PRINT "Artikel 3"
INPUT "Artikel: ", artikel3$
INPUT "Anzahl:  ", anzahl3%
INPUT "Preis:   ", preis3!
gesamt3! = anzahl3% * preis3!

'Ausgabebildschirm erzeugen
CLS
LOCATE 2, 5
PRINT "Rechnungsblatt"
LOCATE 4, 5
PRINT name$
LOCATE 5, 5
PRINT strasse$
LOCATE 6, 5
PRINT plz$ + " " + ort$
LOCATE 8, 5
PRINT "Artikel"; TAB(45); "Anz"; TAB(50);
PRINT "Preis"; TAB(65); "Gesamt"
LOCATE 9, 5
PRINT artikel1$
LOCATE 9, 45
PRINT USING "###"; anzahl1%
LOCATE 9, 50
PRINT USING "######,.##"; preis1!; TAB(65);
PRINT USING "######,.##"; gesamt1!
LOCATE 10, 5
PRINT artikel2$
LOCATE 10, 45
PRINT USING "###"; anzahl2%
LOCATE 10, 50
PRINT USING "######,.##"; preis2!; TAB(65);
PRINT USING "######,.##"; gesamt2!
LOCATE 11, 5
PRINT artikel3$
LOCATE 11, 45
PRINT USING "###"; anzahl3%
LOCATE 11, 50
PRINT USING "######,.##"; preis3!; TAB(65);
PRINT USING "######,.##"; gesamt3!
sumpreis = preis1! + preis2! + preis3!
sumgesamt = gesamt1! + gesamt2! + gesamt3!
mehrwert! = sumgesamt! * mwst% / 100
LOCATE 15, 30
PRINT "Summe: "; TAB(50);
PRINT USING "######,.##"; sumpreis!; TAB(65);
PRINT USING "######,.##"; sumgesamt!
LOCATE 16, 30
PRINT USING "MWST ###%"; mwst%; TAB(65);
PRINT USING "######,.##"; mehrwert!
LOCATE 17, 30
PRINT "Rechnungsbetrag: "; TAB(65);
PRINT USING "######,.##"; sumgesamt! + mehrwert!

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Früh aufstehen ist der erste Schritt in die falsche Richtung.

Uri Geller verbiegt Löffel. Na und, Maggi macht Knoten rein!

Ich bin im WH Forum seit dem 11.05.2003 ... wow
29.01.2012 00:22
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste