Avatar billede segato Nybegynder
18. december 2006 - 21:54 Der er 5 kommentarer og
1 løsning

Klippe en tekst.

Jeg har andvendt DrawString til at tegne en tekstreng i en Graphics i en firkant. Problemet er hvis strengen er længere end en given længde skal den klippes. Så er her nogen der har en god metode til at klippe en streng ned til en given længde?
Avatar billede jokkejensen Novice
18. december 2006 - 21:59 #1
du kan aflæse strengens længde med string.length .. og dele den med string.substring(startindex, antaltegn)

er det dette du er ude efter ?
Avatar billede segato Nybegynder
18. december 2006 - 22:13 #2
Ikke rigtigt. jeg skal tegne strengen i en firkant der måske er 30 lang. Hvis strengen så er 39 pixels bred skal strengen skæres ned så den passer til firkantens brede. Man kunne så evt. bruge measure string til at måle breden og så tage et bokstav af gangen, men vil se om der ikke findes en bedre måde.
Avatar billede bulgroz Nybegynder
19. december 2006 - 00:37 #3
Her et hurtigt brygget eksempel som viser hvorledes tekst kan "klippes"

        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            string textSomSkalSkrives = "Slam Bam Busse";

            // Simpel måling af størrelsen...
            SizeF sizef = e.Graphics.MeasureString(textSomSkalSkrives, this.Font);
            Size size = Size.Round(sizef);

            Rectangle rectangle = new Rectangle(new Point(10, 10), size);

            using (Pen pen = new Pen(Color.Magenta))
            {
                e.Graphics.DrawRectangle(pen, rectangle);

                TextRenderer.DrawText(e.Graphics, textSomSkalSkrives, this.Font, rectangle, Color.Magenta);
            }

            // Forskyd eksempel 2...
            Point location = new Point(rectangle.X, rectangle.Y + rectangle.Height * 2);
            rectangle.Location = location;

            // Udskriver testen uden padding...
            using (Pen pen = new Pen(Color.Maroon))
            {
                e.Graphics.DrawRectangle(pen, rectangle);

                TextFormatFlags textFormatFlags = TextFormatFlags.Left | TextFormatFlags.NoPadding;
                TextRenderer.DrawText(e.Graphics, textSomSkalSkrives, this.Font, rectangle, Color.Maroon, textFormatFlags);
            }

            // Gør bounds for lille...
            size = new Size(rectangle.Width / 2, rectangle.Height);
            rectangle.Size = size;

            // Klargører udskrift af nyt eksempel
            location = new Point(rectangle.X, rectangle.Y + rectangle.Height * 2);
            rectangle.Location = location;

            // Udskriver teksten i for lille boks hvor resterende tegn klippes...
            using (Pen pen = new Pen(Color.Black))
            {
                e.Graphics.DrawRectangle(pen, rectangle);

                TextFormatFlags textFormatFlags = TextFormatFlags.Left | TextFormatFlags.NoPadding;
                TextRenderer.DrawText(e.Graphics, textSomSkalSkrives, this.Font, rectangle, Color.Black, textFormatFlags);
            }

            // Klargører udskrift af nyt eksempel
            location = new Point(rectangle.X, rectangle.Y + rectangle.Height * 2);
            rectangle.Location = location;

            // Udskriver teksten i for lille boks hvor de sidste karakterer erstattes med "..." (End Ellipsis)
            using (Pen pen = new Pen(Color.Black))
            {
                e.Graphics.DrawRectangle(pen, rectangle);

                TextFormatFlags textFormatFlags = TextFormatFlags.Left | TextFormatFlags.NoPadding | TextFormatFlags.EndEllipsis;
                TextRenderer.DrawText(e.Graphics, textSomSkalSkrives, this.Font, rectangle, Color.Black, textFormatFlags);
            }

            // Og ja man kunne blive ved, jeg anbefaler at kigge lidt på de forskellige TextFormatFlags...

        }
Avatar billede segato Nybegynder
19. december 2006 - 08:12 #4
Det jo lige i øjet bulgroz, smid et svar!
Avatar billede bulgroz Nybegynder
19. december 2006 - 08:28 #5
God Jul...
Avatar billede segato Nybegynder
19. december 2006 - 09:29 #6
Tak i lige måde.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester