Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: elnorber en 20 Marzo 2011, 18:29 PM

Título: Tamaño de fuente C# (Aplicacion de consola)???
Publicado por: elnorber en 20 Marzo 2011, 18:29 PM
Hola, estoy programando en c# un ajedrez. En una matriz de 2 dimensiones,  char [8,8] establezco las piezas del tablero, por su inicial, siendo las mayusculas las negras y las minisculas las blancas.

El problema es que al iniciar la aplicación, el tamaño de la fuente por defecto en la aplicacion de consola es pequeño y dificulta saber que pieza se trata y en que posicion del tablero se encuentra. He conseguido que en el momento de mostrar el contenido de la matriz, aparezcan las posiciones del tablero numeradas del 1 al 8, tal y como se ve en la siguiente imagen:

(http://img851.imageshack.us/img851/7559/imagenc.png)

Por lo poco que se, la clase Font sirve para cambiar el tamaño e incluso elegir que tipo de letra usar, pero sólo funciona para aplicaciones Windows Forms.

En una aplicacion de consola, se podría establecer el tamaño de la letra? Salu2 y gracias por adelantado :-)
Título: Re: Tamaño de fuente C# (Aplicacion de consola)???
Publicado por: Xephiro en 20 Marzo 2011, 23:26 PM
He encontrado un sitio que creo que seria de toda ayuda para lo que estas preguntando....

http://www.dotnetperls.com/console-color (http://www.dotnetperls.com/console-color)

espero resuelva tu problema.
Título: Re: Tamaño de fuente C# (Aplicacion de consola)???
Publicado por: elnorber en 21 Marzo 2011, 13:59 PM
No es exactamente lo que quería, pero cambiandole el color a las piezas del ajedrez ayuda a distinguir las piezas. Muchas gracias :-)
Título: Re: Tamaño de fuente C# (Aplicacion de consola)???
Publicado por: [D4N93R] en 22 Marzo 2011, 19:46 PM
Hasta donde se, no se puede cambiarle el tamaño, pero como ya te dijeron, el color sí.

En la Clase Console está todo. Más info en MSDN :)
Título: Re: Tamaño de fuente C# (Aplicacion de consola)???
Publicado por: seba123neo en 23 Marzo 2011, 04:41 AM
te paso una clase con una api indocumentada llamada SetConsoleFont, igualmente no parece ser posible cambiarla a gusto, pero te la incrementa algo.

Clase:

Código (vbnet) [Seleccionar]
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Runtime.InteropServices

Namespace ConsoleExtender
    <StructLayout(LayoutKind.Sequential, Pack:=1)> _
    Public Structure ConsoleFont
        Public Index As UInteger
        Public SizeX As Short, SizeY As Short
    End Structure

    Public NotInheritable Class ConsoleHelper
        <DllImport("kernel32")> _
        Private Shared Function SetConsoleFont(ByVal hOutput As IntPtr, ByVal index As UInteger) As Boolean
        End Function

        Private Enum StdHandle
            OutputHandle = -11
        End Enum

        <DllImport("kernel32")> _
        Private Shared Function GetStdHandle(ByVal index As StdHandle) As IntPtr
        End Function

        Public Shared Function SetConsoleFont(ByVal index As UInteger) As Boolean
            Return SetConsoleFont(GetStdHandle(StdHandle.OutputHandle), index)
        End Function

        <DllImport("kernel32")> _
        Private Shared Function GetConsoleFontInfo(ByVal hOutput As IntPtr, <MarshalAs(UnmanagedType.Bool)> ByVal bMaximize As Boolean, ByVal count As UInteger, <MarshalAs(UnmanagedType.LPArray), Out()> ByVal fonts As ConsoleFont()) As Boolean
        End Function

        <DllImport("kernel32")> _
        Private Shared Function GetNumberOfConsoleFonts() As UInteger
        End Function

        Public Shared ReadOnly Property ConsoleFontsCount() As UInteger
            Get
                Return GetNumberOfConsoleFonts()
            End Get
        End Property

        Public Shared ReadOnly Property ConsoleFonts() As ConsoleFont()
            Get
                Dim fonts As ConsoleFont() = New ConsoleFont(GetNumberOfConsoleFonts() - 1) {}
                If fonts.Length > 0 Then
                    GetConsoleFontInfo(GetStdHandle(StdHandle.OutputHandle), False, CUInt(fonts.Length), fonts)
                End If
                Return fonts
            End Get
        End Property
    End Class
End Namespace


Modulo:

Código (vbnet) [Seleccionar]
Module Module1
    Sub Main()
        Dim fonts = ConsoleExtender.ConsoleHelper.ConsoleFonts

        For f As Integer = 0 To fonts.Length - 1
            Console.WriteLine("{0}: X={1}, Y={2}", fonts(f).Index, fonts(f).SizeX, fonts(f).SizeY)
        Next

        ConsoleExtender.ConsoleHelper.SetConsoleFont(9)
        Console.ReadLine()
    End Sub
End Module


saludos.
Título: Re: Tamaño de fuente C# (Aplicacion de consola)???
Publicado por: elnorber en 24 Marzo 2011, 00:30 AM
Muchas gracias, intentaré a ver como queda. Salu2 :-)