WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Buchstaben mittig präsentieren?

 

p.nietnagel
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 53
Anmeldedatum: 19.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.05.2010, 11:36     Titel: Buchstaben mittig präsentieren?
  Antworten mit Zitat      
Hallo,

ich hab eine kleine Funktion, die mir Buchstaben präsentiert.
Allerdings bekomme ich die Buchstaben nicht richtig mittig angeordnet, d.h. mittig ausgehend von der Mitte des jeweiligen Buchstabens. Ich konnte, um die Buchstaben mittig in der figure anzuordnen, nur eine fixe Position angeben, aber dann werden die Buchstaben nach ihrer äußersten linken Ecke ausgerichtet und das ergibt eine unruhige Präsentation, wenn z.B. "I" auf "W" folgt.

Code:

MaskLetters = strcat('W','I','Z','I')';

present=figure;
set(present,'Color','white');
% determine the axis
axis([0 12 0 12])
% we do not display the axis, we wanna have a white figure
axis off 'square'
hold
% wie create a square in order to delete the letter
qx=[0 0 3 3 0];
qy=[0 3 3 0 0];
posx=4;
posy=5;

for iMask = 1:size(MaskLetters,1);
    % present the letter
    text('String', MaskLetters(iMask),...
        'BackgroundColor', 'white',...
        'FontName', 'Arial',...
        'Position',[5 6],...
        'FontSize',36);   % 'EraseMode', 'background'
    %'HorizontalAlignment', 'Center',...
    %'VerticalAlignment', 'Middle',...
    pause(1)
    % delete the letter
    fill(qx+posx,qy+posy,'white','EdgeColor','white')
end
 


Wie man bei den auskommentierten Zeilen sehen kann, hab ich schon mit 'HorizontalAlignment' und 'VerticalAlignment' rumgespielt, aber das funktioniert nicht. Die Referenz für das Alignment sind wohl leider nicht die Achsen.
Ach ja: die "fill" Funktion nutze ich, um den Buchstaben wieder unsichtbar zu machen. Ich wollte das eigentlich mit "EraseMode" erreichen, aber leider wird damit nicht immer der komplette Buchstabe erased, sondern es bleiben manchmal Reste sichtbar. Warum ist das so? (Ich hab alle EraseMode Möglichkeiten ausprobiert: die funktionieren - bei mir - alle nicht richtig).
Hat jemand vielleicht die richtigen Tipps?

Danke im Voraus!

p.nietnagel
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 06.05.2010, 14:28     Titel:
  Antworten mit Zitat      
Moin,

fixe Idee: Ändere die Schriftart zu einer mit einer festen Zeichenbreite (Schreibmaschinenschrift)

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
p.nietnagel
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 53
Anmeldedatum: 19.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.05.2010, 14:51     Titel:
  Antworten mit Zitat      
Hallo Alex,

danke für den schnellen Tipp: aber ich bin mit der Schriftart etwas eingeschränkt: es sollte Helvetica oder Arial sein... Sad

Es muss doch irgendwie eine Möglichkeit geben?
Kann man nicht vielleicht irgendwie ein Objekt um den Buchstaben herum basteln und den Buchstaben dort drin mittig anordnen? Ich hab leider bisher noch keine Möglichkeit gefunden, 'HorizontalAlignment' in einem Objekt zu benutzen.
Hat jemand eine Idee?

Viele Grüße,
p.nietnagel
Private Nachricht senden Benutzer-Profile anzeigen
 
p.nietnagel
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 53
Anmeldedatum: 19.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2010, 13:40     Titel:
  Antworten mit Zitat      
Inzwischen bin ich - mit etwas Hilfe - ein ganzes Stück weitergekommen.
Und zwar:
Code:

pic = figure('position',[1,1,800, 600], 'unit','pixel');
a = axes('unit','pixel','Position',[0 0 800 600]);
[d] = get(a,'xlim');
[e] = get(a,'ylim');
axis off
text('String', '+',...
    'Color',[1 0 0],...
    'FontName', 'Arial',...
    'Position',[d(2)/2 e(2)/2],...
    'HorizontalAlignment', 'Center',...
    'VerticalAlignment', 'Middle',...
    'FontSize',48);  
text('String', 'I',...
    'Color',[0 0 0],...
    'FontName', 'Arial',...
    'Position',[d(2)/2 e(2)/2],...
    'HorizontalAlignment', 'Center',...
    'VerticalAlignment', 'Middle',...
    'FontSize',48);
text('String', 'R',...
    'Color',[0 1 0],...
    'FontName', 'Arial',...
    'Position',[d(2)/2 e(2)/2],...
    'HorizontalAlignment', 'Center',...
    'VerticalAlignment', 'Middle',...
    'FontSize',48);
print(pic,'-dtiff', '-r600','test');
saveas(pic,'test.tiff');
print(pic,'-depsc2','test')
 

Ich hab die 3 Zeichen übereinander projeziert, um zu sehen, ob sie wirklich mittig sind.
Soweit, so gut.
Jetzt würde ich gern meine paar hundert dieser figures speichern.
Über die GUI funktioniert es einwandfrei mit den Optionen:
"ExportSetup", dann unter "size" "Expand axes to fill figure" unter "Rendering" "resolution" "screen", "keep axis limits" und dann "Apply to Figure" und schließlich "export".
Aber wie gesagt: hunderte dieser figures....

Meine Frage: ich dachte, dass ich alles, was ich über die GUI einstellen kann, auch über die Kommandozeile erreiche? Ich hab mit
Code:
Code:
und
Code:
rumgespielt: ich hab dort leider keine Option gefunden, die Resolution anzugeben und die anderen oben genannten Optionen. Wenn ich die figure speichere, dann wird automatisch alles nach rechts verschoben (ich hab die Formate .png, .tif und .eps probiert - letzteres wäre natürlich die bevorzugte Variante). Warum?
Was hab ich übersehen?

Vielen Dank im Voraus für Tipps!

p.nietnagel[/quote]
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.