AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Schrifthöhe und -breite einstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Schrifthöhe und -breite einstellen

Ein Thema von loirad · begonnen am 15. Mai 2011 · letzter Beitrag vom 16. Mai 2011
Antwort Antwort
loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#1

Schrifthöhe und -breite einstellen

  Alt 15. Mai 2011, 14:30
Hallo liebe Delphi-PRAXISler ,
kann man irgendwie in einem Richedit die Schrifthöhe bzw. -breite einstellen?
Das Problem ist, dass bei meinem ASCII-Art Programm das Seitenverhältniss beibehalten wird.
Hier ist mein Quelltext
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ExtDlgs, ExtCtrls, JPEG, StdCtrls, Gauges, Spin, ComCtrls;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    ffnen1: TMenuItem;
    Speichern1: TMenuItem;
    Schlieen1: TMenuItem;
    Anzeige: TImage;
    OpenPictureDialog1: TOpenPictureDialog;
    test1: TMenuItem;
    Genauigkeit: TSpinEdit;
    LGenauigkeit: TLabel;
    LGroesse: TLabel;
    Groesse: TSpinEdit;
    ASCII: TRichEdit;
    procedure Schlieen1Click(Sender: TObject);
    procedure ffnen1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure test1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Schlieen1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.ffnen1Click(Sender: TObject);
begin
with OpenPictureDialog1 do
    if Execute then
      Anzeige.Picture.LoadFromFile(FileName);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Anzeige.Height:=Form1.ClientHeight-Genauigkeit.Height;
Anzeige.Width:=Form1.ClientWidth div 3;
ASCII.Left:=Form1.ClientWidth div 3;
ASCII.Width:=Form1.ClientWidth-Form1.ClientWidth div 3;
ASCII.Height:=Form1.ClientHeight;
DoubleBuffered:=true;
end;

procedure TForm1.test1Click(Sender: TObject);
var i,j:integer;
    Farbe:TColor;
begi
ASCII.Clear;
ASCII.Font.Size:=Groesse.Value;
i:=0;
j:=0;
while i < Anzeige.Picture.Graphic.Height do
 begin
  while j < Anzeige.Picture.Graphic.Width do
   begin
    Farbe:=Anzeige.Canvas.Pixels[j,i];
    if (GetRValue(Farbe)<100) and (GetGValue(Farbe)<100) and (GetBValue(Farbe)<100) then
     ASCII.Text:=ASCII.Text+'#'
    else
     ASCII.Text:=ASCII.Text+' ';
    j:=j+Genauigkeit.Value;
   end;
  i:=i+Genauigkeit.Value;
  ASCII.Text:=ASCII.Text+#13#10;
  Application.ProcessMessages;
  j:=0;
 end;
end;
end.
Liegt das an der Schrifthöhe/-breite
Woran iegt es

Liebe Grüße
loirad
Wer Fehler findet darf sie behalten!
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Schrifthöhe und -breite einstellen

  Alt 15. Mai 2011, 14:41
Ich kann jetzt nur vermuten, dass du die falsche Schriftart verwendest.
Man kann Fonts in zwei Gruppen einteilen:
* Proportional Fonts (Zeichen haben versch. Breiten)
* Monospaced Fonts (alle Zeichen gleich breit)
Für ASCII-Art sind ausschlieslich Monospaced Fonts geeignet.
Bekannte Monospaced Fonts sind: Courier New und Lucida Console.
siehe auch http://www.myfont.de/schriftarten/monospaced/index.html
  Mit Zitat antworten Zitat
loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#3

AW: Schrifthöhe und -breite einstellen

  Alt 15. Mai 2011, 14:48
Ich habe Courier New. Im Anhang hab ich mal das komplette Projekt!
Angehängte Dateien
Dateityp: zip AsciiArt.zip (275,0 KB, 6x aufgerufen)
Wer Fehler findet darf sie behalten!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Schrifthöhe und -breite einstellen

  Alt 16. Mai 2011, 11:09
Hallo liebe Delphi-PRAXISler ,
kann man irgendwie in einem Richedit die Schrifthöhe bzw. -breite einstellen?
Das Problem ist, dass bei meinem ASCII-Art Programm das Seitenverhältniss beibehalten wird.
Welches Seitenverhältnis?
Wenn ich Dein Programm richtig verstanden habe, übersetzt Du Pixel aus einem Bild in Buchstaben. Das kann zunächst einmal mit den meisten Fonts nicht klappen, da die meisten "Buchstabenzellen" höher als breit sind.

Eine Möglichkeit das zu überdecken wäre, mit Textout zu arbeiten, da Du dann die Möglichkeit hast, den Zeilenabstand zu manipulieren.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

AW: Schrifthöhe und -breite einstellen

  Alt 16. Mai 2011, 13:37
Das kann zunächst einmal mit den meisten Fonts nicht klappen, da die meisten "Buchstabenzellen" höher als breit sind.
Jupp, man bräuchte einen Font mit Breite=Höhe.
Oder man löst das Problem dadurch, dass man bei der Umsetzung entsprechend skaliert.
Angenommen das Bild wäre 400 * 400 Pixel.
Der Font hätte 12 * 16 Pixel.
Dann müsste man ausrechnen, wie viele Textzeilen und Textspalten notwendig sind
um möglicht das Aspekt-Ratio (=Breite/Höhe) beizubehalten.
Man wird das ursprüngliche Aspekt-Ratio in aller Regel nicht genau treffen sondern höchstens annähern.
Dazu kommt noch ein Skalierungsfaktor mit dem man Textoutput insgesamt grösser oder kleiner machen kann.
Ein kleiner mathematischer Kraftakt.
Andreas
  Mit Zitat antworten Zitat
loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#6

AW: Schrifthöhe und -breite einstellen

  Alt 16. Mai 2011, 15:55
@p80286: Genau dass meinte ich!
Zitat:
da die meisten "Buchstabenzellen" höher als breit sind
Welche denn nicht?
@all: Danke für eure Hilfe!!!
Wer Fehler findet darf sie behalten!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Schrifthöhe und -breite einstellen

  Alt 16. Mai 2011, 16:06
Wenn ich mich nicht vertue, gab(/gibt) es Bildschirmfonts mit 7x7 und 8x8 Pixeln.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz