gui ist schon klar.
Aber wie kann man die System-Fonts und Größen verarbeiten.
Gibt es da irgendwas mit api...
Beiträge von Ilse
-
-
Hallo m-obi,
ja genau so. Super!
Darf ich nochwas fragen?Gibt es wie.Z.B. wie bei Word die Möglichkeit
in einer Combo alle Schriftarten und Größen anzuzeigen.
So daß man vorher per Laufzeit das ändern kann?
Kannst du mir da einen Tip geben?Ich habe nichts gefunden.
Ilse -
Hallo m-obi,
hatte ich auch schon probiert.
Dann wird einfach nur das Originalbild unter neuem Namen gespeichert.Aber es sollte ja mit dem Text abgespeichert werden.
Und das geht nicht...Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <gdiplus.au3>
#include <ScreenCapture.au3>
#include <WinAPI.au3>$Form1 = GUICreate("Form1", 625, 443, 192, 124)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hgraphics = _GDIPlus_GraphicsCreateFromHWND($form1)
[/autoit] [autoit][/autoit] [autoit]
;$Bild1 = _GDIPlus_ImageLoadFromFile(@ScriptDir&"\bk.jpg")
$Bild1 = _GDIPlus_BitmapCreateFromFile(FileOpenDialog("Bild auswählen", @UserProfileDir, "Bilder (*.*)"))_GDIPlus_GraphicsDrawImage($hgraphics,$Bild1,0,0)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawString($hGraphics, "Das ist ein Text", 50, 10,"Arial","50")_GDIPlus_ImageSaveToFile($Bild1, @ScriptDir & "\GDIPlus.jpg")
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitEndSwitch
[/autoit] [autoit][/autoit] [autoit][/autoit]
WEnd
Grüße Ilse -
Hallo,
ich habe folgendes Problem:
1. Ich öffne ein Bild
2, Ich zeichne darauf Textund dann sollte alles unter einem neuen Namen abgespeichert werden.
Aber das klappt nicht!Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <gdiplus.au3>
#include <ScreenCapture.au3>
#include <WinAPI.au3>$Form1 = GUICreate("Form1", 625, 443, 192, 124)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hgraphics = _GDIPlus_GraphicsCreateFromHWND($form1)
[/autoit] [autoit][/autoit] [autoit]
;$Bild1 = _GDIPlus_ImageLoadFromFile(@ScriptDir&"\bk.jpg")
$Bild1 = _GDIPlus_BitmapCreateFromFile(FileOpenDialog("Bild auswählen", @UserProfileDir, "Bilder (*.*)"))_GDIPlus_GraphicsDrawImage($hgraphics,$Bild1,0,0)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawString($hGraphics, "Das ist ein Text", 50, 10,"Arial","50")_GDIPlus_ImageSaveToFile($hGraphics, @ScriptDir & "\GDIPlus.jpg")
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitEndSwitch
[/autoit] [autoit][/autoit] [autoit][/autoit]
WEndLiebe Grüße
Ilse
-
@ RR04,
Danke nochmals, sieht gut aus.
Muß jetzt leider schon wieder los.
Ich hoffe daß ich am Wochenende alles hinbekomme.Schönes Wochenende
und viele Grüße
Ilse -
Hallo RR04,
danke für dein Beispiel.
[autoit]
Ich bin noch am probieren und kämpfen. Muß da einiges ändern.
Es gibt bei mir keine feste Größe.
[/autoit]
For $i = 0 To 24 ;melde mich wieder.
Kann etwas dauern...
Viele Grüße Ilse -
...muß mich wieder melden.
Die Arrays machen mir mal wieder das leben schwer!
Wenn mein Loop so aussieht,
wie kann ich daraus ein zweidimensionales array machen?
ubound kann ich nicht verwendenSieht so aus:
[autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]For $i = 1 To $Split[0] - 1
[/autoit][autoit][/autoit][autoit]$chkName = StringTrimLeft($Split[$i], 3)
[/autoit][autoit][/autoit][autoit][/autoit][autoit]$Checkbox[$i][0] = GUICtrlCreateCheckbox('', $Links + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, 13, 13)
[/autoit][autoit][/autoit][autoit][/autoit]
$Checkbox[$i][1] = GUICtrlCreateLabel($chkName[$i][1], $Links + 20 + Int($i / $Zeilen) * $Abstand, $Oben + Mod($i, $Zeilen) * $Zwischen, 200, 50)
next
Ilse -
@ alle
erstmal merci für eure HilfeDas Beispiel v. $Var löst genau das Problem
...zweidimensionales ArrayLiebe Grüße
an alleIlse

-
Hallo $Var,
muß mich kurz wieder melden.
[autoit]
Wenn ich die checkboxen so erzeuge
[/autoit][autoit][/autoit][autoit]
For $i = 1 To $Split[0] - 1$chkName = StringTrimLeft($Split[$i], 3)
[/autoit][autoit][/autoit][autoit]$Checkbox[$i] = GUICtrlCreateCheckbox($chkName...
[/autoit][autoit][/autoit][autoit]next
[/autoit]bedeutet das, ich kann $chkName nachträglich nicht mehr beeinflussen?
Es geht mir nur um den "Bezeichner"Das heißt also, beim erzeugen müsste ich einmal die Checkbox ohne Bezeichner anlegen
und dann die Positionen für das Label berechnen und erzeugen...?Grüße Ilse

-
Hallo,
ich möchte gerne für meine Checkboxen
wenn sie angewählt sind, für die "Beschriftung" die Farbe ändern.Also:
[autoit]
Es gibt eine Function.
Beim aufrufen, werden betreffende Checkboxen abgehakt.
[/autoit]
Func _Auswahl()
GUICtrlSetState($Checkbox[9], $gui_checked)
GUICtrlSetState($Checkbox[5], $gui_checked)
GUICtrlSetState($Checkbox[19], $gui_checked)
endfuncSoweit ok.
Die Checkboxen wurden vorher so erzeugt
[autoit]
[/autoit]
$Checkbox[$i] = GUICtrlCreateCheckbox($chkname, 10, 10, 120, 20)Die Frage:
Wie kann ich $chkname farblich ändern, wenn die Funktion aufgerufen wird
bzw. wenn geklickt wird.
1 = blau und 0 = schwarzDas checken kann ich per Loop beeinflussen
[autoit]
[/autoit][autoit][/autoit][autoit]
For $i = 1 To $Split[0] - 1
GUICtrlSetState($Checkbox[$i], $gui_unchecked)next
[/autoit]aber ich komm nicht an $chkname!
Liebe Grüße
Ilse
-
Hallo,
ich konnte das Problem jetzt so lösen:
[autoit]
[/autoit]
_GUICtrlTab_SetCurFocus($Tab1,2)
_GUICtrlTab_SetCurFocus($Tab1,0)Grüße
Ilse
-
Guten Morgen m-obi,
das ist die Checkbox Func()
[autoit][/autoit][autoit][/autoit][autoit]Global $language = ''
[/autoit][autoit][/autoit][autoit]
Global $spaltenNr = 0
Global $reihenAnzahl = 5
Global $oben = 60
Global $TabSheet1, $Form1_1
Global $Checkbox, $CheckboxText
$Split = StringSplit($lang, "|")
Dim $Checkbox[$Split[0]]
Dim $CheckboxText[$Split[0]]Func _Checkbox()
[/autoit][autoit][/autoit][autoit]
For $i = 1 To $Split[0] - 1
If $i > 2 Then
If Mod($i - 1, $reihenAnzahl) = 0 Then $spaltenNr += 1
EndIf
$chkName = StringTrimLeft($Split[$i], 3)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Checkbox[$i] = GUICtrlCreateCheckbox($chkName & "-" & $i, 40 + 40 * $spaltenNr, $oben * $i - $spaltenNr * $oben * $reihenAnzahl, 35, 30)Next
[/autoit]
EndFuncist alles viel Code, deswegen nur das wichtigste.
Wie gesagt, wird alles erzeugt aber nicht gleich in der Gui angezeigt.
Also:
Beim Starten v. Scite F5 (run Script) ist TAB1 aktiv aber leer.
Wird der Tab gewechselt und dann wieder TAB1 geklickt sind sie da!Hier wird die _Checkbox() aufgerufen
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
;Gui.....
GUISetState(@SW_SHOW)
#EndRegion GUI section_checkbox(); Die chkBoxen werden erzeugt in TAB 1
[/autoit] [autoit][/autoit] [autoit]GUISetState(@SW_MAXIMIZE)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1;..................
[/autoit]Grüße
Ilse
-
Hallo,
Ich lasse per Funktion Objekte auf der Gui in z.B. Tab1 erzeugen.
[autoit]
Alles gut soweit
[/autoit][autoit][/autoit][autoit]
Func _Felder()
If IsInt($TabSheet1) ThenGUISwitch($Form1_1, $TabSheet1); Per GuiSwitch auf das Tab umschalten, auf welchem die Controls erstellt werden sollen
[/autoit][autoit][/autoit][autoit]
_Checkbox() ; hier werden die Controls erstelltEndIf
[/autoit][autoit][/autoit][autoit]EndFunc ;==>_Felder
[/autoit]Aber folgendes Problem tritt auf:
Die Objekte werden danach nicht direkt in TAB1 gezeigt.
Wechsele ich auf TAB 2 und dann Auf TAB1 zurück, dann sind sie da.Gibt es irgendein Befehl der nach dem erstellen der Controls sofort die Gui aktualisiert?
Liebe Grüße
Ilse
-
m-obi,
[autoit]
schon gut...
[/autoit]
_GDIPlus_GraphicsDrawStringCustom ($h_Graphics, 'Dein String', 20, 50, 11.5, 0xFFFF0000)
_GDIPlus_GraphicsDrawStringCustom ($h_Graphics, '_GDIPlus_GraphicsDrawStringCustom', 20, 100, 9, 0xFF333333, 0, 1, 'Arial')Die 2. Zeile hat mich etwas verwirrt. Ich dachte wieso wird
'_GDIPlus_GraphicsDrawStringCustom' nochmal aufgerufenDaß das String wie die Func heißt hat mich aufs Glatteis geführt.
Dein 2. String ... und der Groschen wäre gleich gefallen. So kanns gehen...
Ilse -
ok...,
war heute ein wenig zu viel für mich.
Ich übe mal etwas und gehe alles nochmal in Ruhe durch.Dank euch für die Geduld mit mir
Ich schließe mal den Thread
kämpfe mich durch und melde mich wieder.Liebe Grüße
Ilse
-
Hallo m-obi,
hm... das ist mir schon klar.
Beispiel: $nSize ändert die Größe
[autoit]
[/autoit]
$n_Size - Font size to use for drawingOK
Muß ich dann z.B.$nSize = 22
außerhalb der Funktion Global deklarieren
oder muß ich das in die Funktion ändern?.$n_Size
[autoit]
ist in der Funktion drin. Muß ich den Wert 22
z.B. so ändern
[/autoit]
Func _GDIPlus_GraphicsDrawStringCustom ($h_Graphics, $s_String, $i_X, $i_Y, $n_Size = 22, $b_Color,Steh etwas auf dem Schlauch
Muß mal ne Paue machen...
Grüße Ilse -
Hallo,
danke für die Info!
Also ich meinte diese Funktion von $Var
Spoiler anzeigen
[autoit]
[/autoit]
; #FUNCTION# ===================================================================
; Name ..........: _GDIPlus_GraphicsDrawStringCustom
; Description ...: Draw a customized string
; AutoIt Version : v3.3.6.1
; Syntax ........: _GDIPlus_GraphicsDrawStringCustom ($h_Graphics, $s_String, $i_X, $i_Y, $n_Size, $b_Color[, $i_Align = 0[, $i_Weight = 0[, $s_Font = 'Tahoma']]])
; Parameter(s): .: $h_Graphics - Handle to a Graphics object
; $s_String - String to be drawn
; $i_X - X coordinate where the string will be drawn
; $i_Y - Y coordinate where the string will be drawn
; $n_Size - Font size to use for drawing
; $b_Color - Alpha, Red, Green and Blue components
; $i_Align - The alignment can be one of the following:
; |0 - The text is aligned to the left
; |1 - The text is centered
; |2 - The text is aligned to the right
; $i_Weight - The style of the typeface. Can be a combination of the following:
; |0 - Normal weight or thickness of the typeface
; |1 - Bold typeface
; |2 - Italic typeface
; |4 - Underline
; |8 - Strikethrough
; $s_Font - Name of the Font Family
; Return Value ..: Success - True
; Failure - False
; Author(s) .....: $var
; ==============================================================================
Func _GDIPlus_GraphicsDrawStringCustom ($h_Graphics, $s_String, $i_X, $i_Y, $n_Size, $b_Color, $i_Align = 0, $i_Weight = 0, $s_Font = 'Tahoma')
Local $a_CreateSolidFill, $a_CreateStringFormat, $a_CreateFontFamilyFromName, $a_CreateFont, $t_Struct, $p_Layout, $a_Return
$a_CreateSolidFill = DllCall ($ghGDIPDll, 'int', 'GdipCreateSolidFill', 'int', $b_Color, 'dword*', 0)
$a_CreateStringFormat = DllCall ($ghGDIPDll, 'int', 'GdipCreateStringFormat', 'int', 0, 'word', 0, 'ptr*', 0)
$a_CreateFontFamilyFromName = DllCall ($ghGDIPDll, 'int', 'GdipCreateFontFamilyFromName', 'wstr', $s_Font, 'ptr', 0, 'handle*', 0)
$a_CreateFont = DllCall ($ghGDIPDll, 'int', 'GdipCreateFont', 'handle', $a_CreateFontFamilyFromName[3], 'float', $n_Size, 'int', $i_Weight, 'int', 3, 'ptr*', 0)
$t_Struct = DllStructCreate ($tagGDIPRECTF)
$p_Layout = DllStructGetPtr ($t_Struct)
DllStructSetData ($t_Struct, 'X', $i_X)
DllStructSetData ($t_Struct, 'Y', $i_Y)
DllStructSetData ($t_Struct, 'Width', 0)
DllStructSetData ($t_Struct, 'Height', 0)
DllCall ($ghGDIPDll, 'int', 'GdipSetStringFormatAlign', 'handle', $a_CreateStringFormat[3], 'int', $i_Align)
$a_Return = DllCall ($ghGDIPDll, 'int', 'GdipDrawString', 'handle', $h_Graphics, 'wstr', $s_String, 'int', -1, 'handle', $a_CreateFont[5], _
'ptr', $p_Layout, 'handle', $a_CreateStringFormat[3], 'handle', $a_CreateSolidFill[2])
Return $a_Return[0] = 0
EndFunc ;==> _GDIPlus_GraphicsDrawStringCustomEr meinte daß man damit die Stringattribute u.v.m. einfach ändern kann.
Und meine Frage war, was ich an der Func ändern muß?Wenn ich z.B. die Schriftart und Größe ändern will
was muß ich da an der Funktion ändern?
Grüße Ilse -
Hallo $Var,
noch kurz ne Frage:
Die Funktion verwirrt mich noch etwas:
[autoit]
Wo genau muß ich was ändern?
[/autoit]
; $s_Font - Name of the Font FamilyMuß ich das aktivieren? Oder die Zeile in die Funktion einbauen?
[autoit]
[/autoit]
$s_Font = "Arial"
Ilse -
Hallo $Var,
merci für deine Hilfe!
Und den GDI Link...Naja, sieht alles mächtig aus...ich melde mich dann nächstes Jahr wieder.

Mach mich gleich dran und arbeite mich mal rein.
Vielen Dank
Liebe Grüße
Ilse
-
Hallo $Var,
super das klappt.
Eine GDI Frage noch:Wie kann man die Schriftattribute ändern?
[autoit]
Hab das in der Hilfe gefunden
[/autoit]
$hFormat = _GDIPlus_StringFormatCreate()
$hFamily = _GDIPlus_FontFamilyCreate("Arial")
$hFont = _GDIPlus_FontCreate($hFamily, 12, 2)
$tLayout = _GDIPlus_RectFCreate(140, 110, 100, 20)Wenn ich z.B. diese Zeile habe
[autoit]
[/autoit]
Local $hImage = WTOB($iFile, Clipget(), "Arial", 40, 200, 200, 2, 2)Wo finde ich, daß die Schrift z.B. rot, blau...ausgefüllt wird?
Bin in der Hilfe noch nicht so ganz durchgestiegen...Gibt es vielleicht irgendwo ein GDIPlus Tutorial?
Grüße Ilse