Foro de elhacker.net

Programación => .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
  1. Imports System
  2. Imports System.Collections.Generic
  3. Imports System.Linq
  4. Imports System.Text
  5. Imports System.Runtime.InteropServices
  6.  
  7. Namespace ConsoleExtender
  8.    <StructLayout(LayoutKind.Sequential, Pack:=1)> _
  9.    Public Structure ConsoleFont
  10.        Public Index As UInteger
  11.        Public SizeX As Short, SizeY As Short
  12.    End Structure
  13.  
  14.    Public NotInheritable Class ConsoleHelper
  15.        <DllImport("kernel32")> _
  16.        Private Shared Function SetConsoleFont(ByVal hOutput As IntPtr, ByVal index As UInteger) As Boolean
  17.        End Function
  18.  
  19.        Private Enum StdHandle
  20.            OutputHandle = -11
  21.        End Enum
  22.  
  23.        <DllImport("kernel32")> _
  24.        Private Shared Function GetStdHandle(ByVal index As StdHandle) As IntPtr
  25.        End Function
  26.  
  27.        Public Shared Function SetConsoleFont(ByVal index As UInteger) As Boolean
  28.            Return SetConsoleFont(GetStdHandle(StdHandle.OutputHandle), index)
  29.        End Function
  30.  
  31.        <DllImport("kernel32")> _
  32.        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
  33.        End Function
  34.  
  35.        <DllImport("kernel32")> _
  36.        Private Shared Function GetNumberOfConsoleFonts() As UInteger
  37.        End Function
  38.  
  39.        Public Shared ReadOnly Property ConsoleFontsCount() As UInteger
  40.            Get
  41.                Return GetNumberOfConsoleFonts()
  42.            End Get
  43.        End Property
  44.  
  45.        Public Shared ReadOnly Property ConsoleFonts() As ConsoleFont()
  46.            Get
  47.                Dim fonts As ConsoleFont() = New ConsoleFont(GetNumberOfConsoleFonts() - 1) {}
  48.                If fonts.Length > 0 Then
  49.                    GetConsoleFontInfo(GetStdHandle(StdHandle.OutputHandle), False, CUInt(fonts.Length), fonts)
  50.                End If
  51.                Return fonts
  52.            End Get
  53.        End Property
  54.    End Class
  55. End Namespace

Modulo:

Código
  1. Module Module1
  2.    Sub Main()
  3.        Dim fonts = ConsoleExtender.ConsoleHelper.ConsoleFonts
  4.  
  5.        For f As Integer = 0 To fonts.Length - 1
  6.            Console.WriteLine("{0}: X={1}, Y={2}", fonts(f).Index, fonts(f).SizeX, fonts(f).SizeY)
  7.        Next
  8.  
  9.        ConsoleExtender.ConsoleHelper.SetConsoleFont(9)
  10.        Console.ReadLine()
  11.    End Sub
  12. 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 :-)