Vykreslování písmeno po písmenu – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Vykreslování písmeno po písmenu – .NET – Fórum – Programujte.comVykreslování písmeno po písmenu – .NET – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Valibuk0
Duch
29. 4. 2012   #1
-
0
-

Zdravím, potřeboval bych vykreslit text písmeno po písmenu (kůli různým barvám jednotlivých písmen). Něco sem sesmolil, ale nevykresluje to správně (některá písmena se překrývají)

Napadá někoho lepší postup ?

Předem díky za všechny rady

Graphics G = e.Graphics;
           Graphics Gr = Graphics.FromImage(Plocha);
           Gr.Clear(Color.White);
           int KDE = 0;
           for(int i = 0; i < text.Length; i++)
           {
               Gr.DrawString(text[i].ToString(), new Font("Arial",16, FontStyle.Regular), Brushes.Black, new PointF(KDE+i*2, 0));

               System.Windows.Media.FormattedText F= new System.Windows.Media.FormattedText(text.Substring(0,i),CultureInfo.CurrentCulture,System.Windows.FlowDirection.LeftToRight,
                   new System.Windows.Media.Typeface("Arial"),16,System.Windows.Media.Brushes.Black);
               KDE = (int)F.Width +i * 2;
           }
           G.DrawImageUnscaled(Plocha, new Point(10, 10));
Nahlásit jako SPAM
IP: 109.80.234.–
Reklama
Reklama
Řešení
zlz
~ Anonymní uživatel
634 příspěvků
29. 4. 2012   #2
-
+1
-
Zajímavé
Vyřešeno Nejlepší odpověď

Vykreslování textu nefunguje (resp. nemusí fungovat) jako postupné vykreslování samostatných znaků, ale to je tady asi celkem jedno. Hlavně to KDE asi chceš postupně posunovat a ne ignorovat předchozí znaky, takže třeba takhle

float KDE = 0;
Font f = new Font("Arial", 16, FontStyle.Regular);
StringFormat sf = StringFormat.GenericTypographic;
sf.FormatFlags |= StringFormatFlags.MeasureTrailingSpaces;
for (int i = 0; i < text.Length; i++)
{
    Gr.DrawString(text[i].ToString(), f, Brushes.Black, KDE, 0);
    KDE += Gr.MeasureString(text[i].ToString(), f, 1000, sf).Width;
}
Nahlásit jako SPAM
IP: 213.211.51.–
Valibuk0
Duch
30. 4. 2012   #3
-
0
-

Moc díky, přesně tohle jsem potřeboval

Nahlásit jako SPAM
IP: 109.80.234.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 98 hostů

Podobná vlákna

C# Poslední písmeno — založil Martin

Pismeno W pomoc — založil XANI

Jak nahradit pismeno ť — založil PetrUK

Oprava 3.ukolu! ...12.pismeno — založil TazDevil

Velké počáteční písmeno — založil Guru12

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý