Tamaño de fuente C# (Aplicacion de consola)???

Iniciado por elnorber, 20 Marzo 2011, 18:29 PM

0 Miembros y 1 Visitante están viendo este tema.

elnorber

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:



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

Xephiro

He encontrado un sitio que creo que seria de toda ayuda para lo que estas preguntando....

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

espero resuelva tu problema.

elnorber

No es exactamente lo que quería, pero cambiandole el color a las piezas del ajedrez ayuda a distinguir las piezas. Muchas gracias :-)

[D4N93R]

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

seba123neo

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.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

elnorber

Muchas gracias, intentaré a ver como queda. Salu2 :-)