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 :-)
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.
No es exactamente lo que quería, pero cambiandole el color a las piezas del ajedrez ayuda a distinguir las piezas. Muchas gracias :-)
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 :)
te paso una clase con una api indocumentada llamada SetConsoleFont, igualmente no parece ser posible cambiarla a gusto, pero te la incrementa algo.
Clase:
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:
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.
Muchas gracias, intentaré a ver como queda. Salu2 :-)