Laden...

Forenbeiträge von el_vital Ingesamt 346 Beiträge

21.07.2009 - 20:05 Uhr

dann mach das doch so das du dich folder fuer folder durch arbeitest

gespeicherten path laden
path splitten
objekte einzeln dem tree geben und und expanden lassen sodass der benoetigte pfad geladen wird - das so lange bis zu beim letzten objekt angekommen ist

aufgabe 1 wird sein das du ein tree hast wo du elemente suchen und als expanded markieren kannst
dann immer tiefer gehen und bei bedarf verzeichnis laden

weißt du vielleicht wie ich einen String (z.B. c:) in ein TreeViewItem umwandeln kann?

21.07.2009 - 19:53 Uhr

Das TreeView in WPF hat keine Nodes. Und die Nodes sind ja noch nicht geladen um in denen zu suchen. Alle beim Programmstart zu laden dauert zu lange.

21.07.2009 - 19:14 Uhr

Ich verwende in einer WPF Anwendung ein TreeView zur Anzeige der Verzeichnisse des Rechners. Beim Programmstart werden erst alle Rootverzeichnisse/Laufwerke mit Directory.GetLogicalDrives() eingelesen. Öffnet der Benutzer ein Laufwerk werden die Unterverzeichnisse eingelesen.

Ich möchte beim Beenden der Anwendung das aktuell gewählte Verzeichnis speichern, damit beim nächsten Programmstart das selbe Verzeichnis in dem TreeView ausgewählt bleibt. Das Speichern des Verzeichnisses ist kein Problem., aber ich finde keinen Weg es bei nächstem Start wieder in TreeView zu laden.

Jemand eine Idee wie ich das machen kann?

16.07.2009 - 10:23 Uhr

hattest du es entfernt ?

wahrscheinlich habe ich es unbewust entfernt. Für Anfänger ist es gut zu wissen, dass InitializeComponent(); unbedingt notwendig ist. Den beim gestalten des UserControls wird "ohne" alles richtig angezeigt, alles wird kompiliert und beim Verwenden sieht man es dann nicht mal im Designer.

16.07.2009 - 08:03 Uhr

das Problem war, dass


 InitializeComponent();

in dem Konstruktor des UserControls nicht vorhanden war.

16.07.2009 - 07:52 Uhr

und was erwartest du ?
anhand des codes was du hier gepostet hast muesstest du nur ein rechteck mit der farbe #FF333232 haben

was unschoen ist und eventuell probleme macht ist wenn du die groesse im usercontrol an gibst und dann nochmal beim aufruf
bei solchen sachen sollte man im usercontrol gar keine groesse angeben

ist schon klar. Eben diese Farbe sehe ich nicht. Ich habe es extra abgespeckt um alle Fehlerquellen auszuschließen.

15.07.2009 - 21:37 Uhr

Ich habe ein UserControl erstellt. Wenn man sich die XAML in VisualStudi oder in dem Blend 2 anschaut, sieht alles gut aus. Wenn ich es aber einem Window hinzufüge meckert der Compiler nicht, das Element wird hinzugefügt, aber man sieht es nicht. Es ist einfach ein leeres Rechteck zu sehen. Was könnte es sein? Das Programm läst sich starten, aber das SteuerElement ist einfach nicht zu sehen.


<UserControl
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	x:Class="bild.PictureViewer" Height="240" Width="720" Background="#FF333232">

</UserControl>


<Window x:Class="bild.Stapelverarbeitung"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        
    xmlns:custom="clr-namespace:bild"
    Title="Stapelverarbeitung" Height="800" Width="600">

    <Grid>
        <custom:PictureViewer  Height="300" Width="100" />
</Grid>
</Window>

15.07.2009 - 07:40 Uhr

danke winSharp93. So etwas funktioniert ja wirklich einfach.
Nur folgendes mußte ich löschen: DataType="{x:Type System:String}
Das wird von dem Compiler nicht akzeptiert.

13.07.2009 - 21:27 Uhr

ich möchte Ordner auswählen und die dort enthaltene Bilder anzeigen. Meine Kenntnisse in WPF sind wohl zu schlecht. Alle Bücher schneiden nur die Grundlagen an und ich habe noch nicht verstanden wie ich so etwas damit schnell realisieren kann. Besonders nicht mit XAML.

13.07.2009 - 20:48 Uhr

Ist es möglich die ImageListBox auf die Form einer WPF Anwendung zu bringen?

05.07.2009 - 20:06 Uhr

Wobei aber noch erwähnt werden sollte, dass das keine allgemeingültige Lösung ist, da man ja wirklich nur beim SolidColorBrush eine bestimmte Farbe angeben kann. Bei den anderen Brushetypen gibt es ja nicht die eine Farbe.

es ist richtig. Gibt es bei anderen Brushtypen vielleicht einen Zugriff auf die einzelnen Farben über einen Index?

05.07.2009 - 14:32 Uhr

ok, hier ist die Lösung:


Color c = (textBox.Foreground as SolidColorBrush).Color;

05.07.2009 - 14:25 Uhr

Wie kann ich ein Brush in ein Color konvertieren?

04.07.2009 - 16:15 Uhr

Schau dir mal das ViewBox Control an, denke das kann dir Arbeit abnehmen.

hatte ich mir bereits angeschaut, super Ding, aber leider nicht im Designer sichtbar.

04.07.2009 - 13:53 Uhr

Aber danke "talla" für deine Hilfe. Ich werde jetzt doch Canvas einsetzen und alles bei einer Änderung der Fenstergröße verwalten. Ist auch nicht so viel Arbeit.

04.07.2009 - 13:47 Uhr

Wenn ich mit einem Canvas arbeite, dann muss ich beim vergrößern/verkleinern des Fensters manuell alle Elemente in der Größe anpassen, damit die proportional mit dem Fenster die Größe ändern. Mit einem Grid funktioniert das alles automatisch.

04.07.2009 - 12:24 Uhr

das habe ich schon gelesen und andere Quellen ebenfalls. Nichts desto trotz kann ich ein Margin-Element nicht zur Laufzeit einzeln ändern.

Und ich finde keine Möglichkeit eine TextBox mit der Maus zu verschieben und beim loslassen dort zu positionieren. Es muss in einem Grid sein, kein Canvas. Mit WindowsForms ist soetwas kein Problem. Mit WPF ist es wohl nicht ohne weiteres möglich. Ich habe Haufen Beiträge in unterschiedlichen Foren weltweit mit dem selben Problem gesichtet und nirgendwo wurde eine Lösung gefunden.

04.07.2009 - 09:24 Uhr

das hier:


textBoxLogo.Margin.Left = textBoxLogo.Margin.Left + 50.0; 

ergibt einen Fehler:
Fehler 1 Der Rückgabewert "System.Windows.FrameworkElement.Margin" kann nicht geändert werden, da er keine Variable ist.

04.07.2009 - 08:43 Uhr

ach in einem Grid ist die Bewegung garnicht möglich?
Sicher ist sie da möglich. Nur eben anders.

Bei einem Grid musst du die
>
verändern.

mfg
SeeQuark

ist das Verändern der Margin-Werte nur auf diese Weise möglich?


textBox.Margin = new Thickness(double left, double top, double right, double bottom)

Das Verändern der einzelne Werte ist nicht möglich? Ich hatte versucht es einzeln zu verändern, das ging nicht und ich hatte es aufgegeben.

Ausserdem scheinen die Margin-Werte zur Laufzeit nicht zu stimmen. Wenn beim Gestalten Margin.Left z.B. 120 ist und das Fenster 800x600. Zur Laufzeit wird das Fenster maximiert die Textgröße bleibt gleich, die Abstände zu den Kanten des Grids werden wesentlich größer, aber wenn man sich Margin.Left anschaut, dann ist es immer noch 120. Dieser Wert stimmt dann auf gar keinen Fall. Wenn man nachmisst, dann sollte der viel größer sein.

04.07.2009 - 07:58 Uhr

Probier mal
>>>
.
auch mit dieser Zeile passiert nichts mit der TextBox
Ist die TextBox denn in einem Canvas? Oder ist sie in einem Grid?

mfg
SeeQuark

ach in einem Grid ist die Bewegung garnicht möglich? Das erschwert natürlich die Gestaltung wenn es nur ein Canvas sein muss, aber dafür funktioniert das Bewegen. Danke.

03.07.2009 - 23:16 Uhr

.location?

so weit ich weis gibt es unter WPF leider kein .location.

03.07.2009 - 23:15 Uhr

wenn du es in ner schönen animation über die form schieben willst wäre es vielleicht mit wpf recht angenehm zu lösen, da konnte man animationen ziemlich leicht machen

ich möchte die Textbox zur Laufzeit an einer beliebigen Stelle über einem Image positionieren können und ich muss dan die Position genau kennen. Ich weiß nicht ob eine Animation das richtige ist.

03.07.2009 - 23:14 Uhr

Probier mal
>
.
EDIT: Wobei man das besser über ein Binding löst.

mfg
SeeQuark

auch mit dieser Zeile passiert nichts mit der TextBox

03.07.2009 - 22:06 Uhr

Ich stelle mal hier diese allgemeine Frage. Ist es möglich eine TextBox zur Laufzeit auf der Oberfläche zu bewegen?? Ich habe etwas von textbox1.SetValue(Canvas.LeftProperty, newX); gelesen, aber bei mir hat diese Anweisung keine Funktion. Weiß vielleicht jemand wie ich die genaue Position einer TextBox auf der Oberfläche auslesen kann und wie ich die Position beeinflussen kann?

03.07.2009 - 14:03 Uhr

Weiß vielleicht jemand wie ich die Position einer TextBox über einem Image herausfinden kann?? Im Designer sind bei der Textbox alle vier Margin Werte eingetragen. Wenn das Programm läuft ist die Oberfläche größer als im Designer die Margin Werte müßten sich also vergrößert haben, da die Abstände auf allen vier Seiten zu dem Rand größer sind. Die Margin werte bleiben aber zur Laufzeit immer gleich, unabhängig von der Größe des Fensters. Deswegen ist es unmöglich die Position der Textbox auf der Oberfläche zur Laufzeit genau zu bestimmen. 🙄

02.07.2009 - 12:25 Uhr

ok, die Unschärfe kam, weil man (bi.PixelWidth, bi.PixelHeight) und nicht (bi.Width, bi.Height) verwenden muss. Aber wie die Größe des Textes angepasst werden kann ist mir noch unklar.

02.07.2009 - 12:02 Uhr

mit rtb.Render(drawingVisual); wird auch das gezeichnete Image extrem unscharf. Finde leider keine Lösung für dieses Problem.

01.07.2009 - 12:17 Uhr

ok, ich habe es hin bekommen den Text aus einer TextBox auf ein Image mit folgendem Quelltext zu übertragen.


    private void buttonSpeichern_Click(object sender, RoutedEventArgs e)
        {

            // Text to render on the image.
            FormattedText text = new FormattedText(textBoxLogo.Text, new CultureInfo("en-us"),
                                                   textBoxLogo.FlowDirection,
                    new Typeface(textBoxLogo.FontFamily, textBoxLogo.FontStyle, textBoxLogo.FontWeight,
                      textBoxLogo.FontStretch),
                    textBoxLogo.FontSize,
                    textBoxLogo.Foreground);

            // The Visual to use as the source of the RenderTargetBitmap.
            DrawingVisual drawingVisual = new DrawingVisual();
            DrawingContext drawingContext = drawingVisual.RenderOpen();
            //  bi ist ein BitmapImage
            drawingContext.DrawImage(bi, new Rect(0, 0, bi.Width, bi.Height));
            drawingContext.DrawText(text, new Point(bi.Height / 2, 0));
            drawingContext.Close();

            RenderTargetBitmap rtb = null;
            // drawingVisual rendern
            rtb = new RenderTargetBitmap((int)bi.Width, (int)bi.Height, 96, 96, PixelFormats.Pbgra32);
            rtb.Render(drawingVisual);
            rtb.Freeze();
            image1.Source = rtb;
        }

Das Problem dabei ist die nicht passende Auflösung. Der kleine Text auf dem Bild ist die TextBox, der große ist der übertragene Text. Ich möchte aber, dass der gezeichnete Text genau so aussieht wie der Text der TextBox im Moment des Zeichnens. Hat jemand eine Idee wie man die Auflösung angleichen kann?

Hier ein Bild:

23.06.2009 - 10:53 Uhr

nicht nur das - der benutzer kann ja die leiste doppelt oder dreifach hoch haben
kann man sowas messen ?

kann man ohne Probleme.


// Gets an array of all the screens connected to the system.
Screen[] screens = Screen.AllScreens;
upperBound = screens.GetUpperBound(0);

int iSichtbareBreite = screens[0].WorkingArea.Width;
int iSichtbareHoehe  = screens[0].WorkingArea.Height;

dafür werden folgende Sachen benötigt:


using System.Windows.Forms;
using System.Drawing;

17.06.2009 - 12:51 Uhr

ja, ich arbeite damit. So sieht es bei mir aus:


	SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();

	// true = Windows-Authentifizierung 
	// false = SQL-Server-Authentifizierung
	builder.IntegratedSecurity  = true;
			
	// Die Datenquelle 
	builder.DataSource = mySettings.Datenquelle;
			
	// Die Datenbank
	builder.InitialCatalog = mySettings.DatenbankName;

	// Timeout für die Verbindung
	builder.ConnectTimeout = 2;
		
	// Den Connection String bilden
	sConnectionString = builder.ConnectionString;

17.06.2009 - 12:34 Uhr

ich habe gerade das selbe Problem. Ich möchte, dass es bei einer falschen Datenquelle früher als nach 15 oder 30 Sekunden abgebrochen wird. Setze ich ConnectTimeout = 2; dauert es trotzdem bis zu 40 Sekunden bis es abgebrochen wird.

14.06.2009 - 13:41 Uhr

Mensch...

Wenn ein User z.B. 100 Bilder öffnet. Werden immer nur maximal 5 Bilder angezeigt. Dann wird es eine Möglichkeit geben in den 100 Bildern zu scrollen (rechts/links).
Feste Column-Anzahl ist genau das was ich haben möchte. Die Column-Breiten und - Margin-Werte sind eben nicht fest.

Was für mich die richtige Lösung ist, entscheide nur ich. Bitte enthalte dich diesem Thread. Das ist lächerlich. Ich sage, dass ich für mich das erreicht habe was ich benötige und du schreibst ist alles falsch und misst. Eine Klette^10...

Vergrößer/Verkleiner mal das Fenster der zweiten Anwendung. Das ist genau das Verhalten was ich erreichen wollte und jede Lösung die zu dem von mir gewünschten Ergebnis führt ist die richtige. Es gibt nicht "DIE RICHTIGE LÖSUNG". .NET ist sehr flexibel und jeder setzt es ein wie er es für richtig hält.

14.06.2009 - 13:10 Uhr

dein "test" steht aber in keiner relation zur irgendeiner dynamic
du hast ein grid mit festen werten
und deine "loesung" war spalten im grid ein zu fuegen
das hilft bei der "echten" loesung ueberhaupt kein stueck da man in der "echten" loesung nicht wirklich mit grid columns und margins in diesem ausmass arbeiten kann

Ich verstehe deinen "Angriff" nicht. Du kennst doch meinen Ziel und meine Vorstellung der Endanwendung nicht. Ich hatte nur gefragt wie ich beim Vergrößern des Anwendungsfensters die Images gleichmäßig skalieren kann und, dass die nicht aufeinander laufen. Genau das wurde mit meiner Lösung erreicht. Wo ist das Problem!? Genieße den Sonntag.

14.06.2009 - 13:03 Uhr

dein "test" steht aber in keiner relation zur irgendeiner dynamic
du hast ein grid mit festen werten
und deine "loesung" war spalten im grid ein zu fuegen
das hilft bei der "echten" loesung ueberhaupt kein stueck da man in der "echten" loesung nicht wirklich mit grid columns und margins in diesem ausmass arbeiten kann

Die werte sind eben nicht fest. Ich lade gleich die exe hoch. Kannst mal anschauen...

14.06.2009 - 12:06 Uhr

das war doch nur ein Test. Natürlich wird meine Anwendung dynamisch sein und die Bilder werden zur Laufzeit von einem User ausgewählt. Scrollen wird möglich sein usw.

14.06.2009 - 09:39 Uhr

Ich habe das Problem gut lösen können und die Lösung ist sehr simpel. In dem Grid einfach Spalten hinzugefügt, so, dass die Images die Abstände zu den Spaltenrändern einhalten.


<Window x:Class="myClass.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   Title="Window1" Height="600" Width="918.5" MinWidth="800" MinHeight="600">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="60*" />
            <ColumnDefinition Width="100.5*" />
            <ColumnDefinition Width="155*" />
            <ColumnDefinition Width="265.5*" />
            <ColumnDefinition Width="155*" />
            <ColumnDefinition Width="100.5*" />
            <ColumnDefinition Width="60.001*" />
        </Grid.ColumnDefinitions>
        <Image FlowDirection="LeftToRight" Margin="13.336,143.362,13.336,138.361" Name="Image1" Panel.ZIndex="0" Source="bild.jpg" Stretch="Uniform" StretchDirection="Both" Grid.Column="3" />
        <Image FlowDirection="LeftToRight" Margin="12.4,207.6,12.4,202.8" Name="image4" Panel.ZIndex="0" Source="bild.jpg" Stretch="Uniform" StretchDirection="Both" Grid.Column="4" />
        <Image FlowDirection="LeftToRight" Margin="10,236.8,10.4,232" Name="image5" Panel.ZIndex="0" Source="bild.jpg" Stretch="Uniform" StretchDirection="Both" Grid.Column="5" />
        <Image FlowDirection="LeftToRight" Margin="11.75,207.6,13.25,202.8" Name="image2" Panel.ZIndex="0" Source="bild.jpg" Stretch="Uniform" StretchDirection="Both" Grid.Column="2" />
        <Image FlowDirection="LeftToRight" Margin="10.521,236.8,9.853,232" Name="image3" Panel.ZIndex="0" Source="bild.jpg" Stretch="Uniform" StretchDirection="Both" Grid.Column="1" />
    </Grid>
</Window>

13.06.2009 - 20:15 Uhr

Schade, ohne den Designer ist es zu umständlich eine sinnvolle Oberfläche zu realisieren. Kann Blend 2 das anzeigen? Ansonsten muss ich mir eine andere Lösung überlegen. Mit den Windows Forms war alles noch so einfach oder mir fehlt halt das Wissen zu WPF. Oder die Technik ist noch nicht ganz ausgereift. Was soll's. Vielleicht hat noch jemand einen Vorschlag wie so etwas ohne ViewBox möglich ist!?

13.06.2009 - 13:18 Uhr

ok, danke. So funktioniert es. Aber ist es normal, dass man die Images im Designer nicht sieht???

13.06.2009 - 11:52 Uhr

hab ein Viewbox ausprobiert. Genau das selbe Verhalten

13.06.2009 - 11:51 Uhr

Setzt das Grid (oder was auch immer) in eine Viewbox.

mfg
SeeQuark

aber was bringt das? Ich möchte, dass sich die Images vergrößern, aber halt alles proportional zu der Ausgangsanordnung. Hast du vielleicht ein Beispiel für mich?

13.06.2009 - 10:46 Uhr

Ich verstehe nicht wie man in WPF Steuerelemente gleichmessig anordnen kann, so dass es beim Vergrössern des Fensters auch gleichmässig bleibt.

Testanwendung

Mein XAML Code:


<Window x:Class="myClass.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   Title="Window1" Height="600" Width="800" MinWidth="800" MinHeight="600">
    
    <Grid>
        <Rectangle Name="rectangle1" Stroke="Black" />
        <Image FlowDirection="LeftToRight" Margin="276,158.591,282,170.591" Name="Image1" Panel.ZIndex="0" Source="bild.jpg" Stretch="Uniform" StretchDirection="Both" />
        <Image FlowDirection="LeftToRight" Margin="185,223.18,517.748,222.41" Name="image2" Panel.ZIndex="0" Source="bild.jpg" Stretch="Uniform" StretchDirection="Both" Grid.IsSharedSizeScope="False" />
        <Image FlowDirection="LeftToRight" Margin="510.013,223.59,193,222.41" Name="image4" Panel.ZIndex="0" Source="bild.jpg" Stretch="Uniform" StretchDirection="Both" />
        <Image FlowDirection="LeftToRight" Margin="99,245.796,624,241.398" Name="image3" Panel.ZIndex="0" Source="bild.jpg" Stretch="Uniform" StretchDirection="Both" />
        <Image FlowDirection="LeftToRight" Margin="618,245.796,105,241" Name="image5" Panel.ZIndex="0" Source="bild.jpg" Stretch="Uniform" StretchDirection="Both" />
    </Grid>
</Window>

13.06.2009 - 07:08 Uhr

Danke. Das habe ich schon gesehen, aber leider verstehe ich nicht wie ich damit auf ein Bild zeichnen kann.

12.06.2009 - 10:26 Uhr

Mich stört diese Verhalten ebenfalls. Man könnte eventuell beim Start die aktuelle Auflösung auslesen und das Fenster manuell so skalieren, dass die Taskleiste nicht verdeckt ist.

12.06.2009 - 10:17 Uhr

Hallo,

gibt es eine möglichkeit einen Text so wie es in einem Label formatiert worden ist in ein Bitmap zeichnen? Also nicht einfach g.DrawString?

bei "Windows Forms Anwendungen" gab es ja label.DrawToBitmap Funktion. Es ist bei WPF leider nicht mehr bei dem Label dabei. Gibt es da eine andere Lösung?

24.02.2009 - 19:41 Uhr

Hallo,

wie kann ich immer auf volle Zahl aufrunden?
Also
2.6 => 3
2.1 => 3

HAT SICH ERLEDIGT: Math.Ceiling()

entschuldigung für die übereilte Frage.

06.01.2009 - 20:39 Uhr

Seltsam ist aber, das ich keinen entsprechenden Eintrag bei Microsoft Connect gefunden habe.

Am besten, du schlägst das dort mal vor.

und saveFileDialog am besten gleich mit. Die Begründung wieso das alles nicht enthalten ist: aus Sicherheitsgründen.
So ein Unsinn. Dann dürfte Browser gar keine "Speicher unter" Funktion zulassen. Und Bildbearbeitung funktionierte schon in Java Applets.