Laden...

Forenbeiträge von srynoname Ingesamt 223 Beiträge

06.08.2010 - 06:30 Uhr

Hallo,

ich benötige dringend synchrone / blockierende Animationen statt asynchrone Animationen, das Completed Event einer Animation reicht in meinem Fall nicht, dafür ist mein Programmablauf zu komplex. Ich habe daher folgendes versucht:

  1. Nach Aufruf von BeginAnimation für eine Animation mit einer Dauer von x Millisekunden rufe ich Thread.Sleep(x) auf. Resultat: Die Animation beginnt nachdem der Thread geschlafen hat, obwohl BeginAnimation vor Thread.Sleep aufgerufen wird!?

  2. Nutzung von Signalen, d.h. konkret der AutoResetEvent Klasse: Sende ein Signal aus dem Completed Event der Animation, im ursprünglichen Thread, der die Animation mit BeginAnimation aufruft, warte nach dem Start der Animation auf das Signal. Resultat: Ähnlich wie in 1 - es blockiert alles die Animation wird nie ausgeführt, obwohl erst nach starten der Animation auf ein Signal gewartet wird.

Ich bin langsam wirklich am verzweifeln und hoffe ihr könnt mir bei diesem Problem helfen, schonmal vielen Dank!

Ich habe ein fertiges Projekt zum Testen angehängt.
Hier noch direkt der Code:

  1. Variante mit Thread.Sleep:
        messageLogTB.Clear();

        TranslateTransform translateTransform = new TranslateTransform();
        animatedButton.RenderTransform = translateTransform;

        DoubleAnimation animation = new DoubleAnimation(0, 200.0, new Duration(TimeSpan.FromMilliseconds(2000)));
        translateTransform.BeginAnimation(TranslateTransform.XProperty, animation);

        // Animation wird asynchron gestartet und dauert 2 Sekunden, warte daher 2 Sekunden nach dem asynchronen Start
        // (funktioniert jedoch nicht, Animation wird NACH der 2 Sekunden Pause ausgeführt!)
        Thread.Sleep(2000);
        messageLogTB.Text += "animation abgeschlossen";

  1. Variante mit Signalen
            messageLogTB.Clear();

        TranslateTransform translateTransform = new TranslateTransform();
        animatedButton.RenderTransform = translateTransform;




        AutoResetEvent trigger = new AutoResetEvent(false);


        // Animation erstellen, Signal wird im Completed Event der Animation gesetzt
        DoubleAnimation animation = new DoubleAnimation(0, 200.0, new Duration(TimeSpan.FromMilliseconds(2000)));
        animation.Completed += delegate(object source, EventArgs args) 
            {
                trigger.Set();
                messageLogTB.Text += "\nsignalisiert / animation beendet";
            };



        // Animation über Dispatcher starten
        messageLogTB.Text += "starting animation";

        Dispatcher.Invoke(
        new Action(
            delegate()
            {
                translateTransform.BeginAnimation(TranslateTransform.XProperty, animation);
            }
        ), null);



        // Warten, bis die Animation ihr Ende signalisiert - leider hängt der Code schon, bevor die Animation ausgeführt wird, ähnlich wie bei der 1. Variante
        trigger.WaitOne();
        messageLogTB.Text += "\nDiese Stelle sollte nach dem Signal / Ende der Animation erreicht werden";

17.07.2010 - 00:55 Uhr

Hallo zusammen,

vielen Dank für eure Antworten.

Die erste Antwort von aadler hat mir schon geholfen:

Hast du das Language Pack Deutsch für das Framework installiert? Soweit ich weiß ist das der entscheidende Faktor für die Sprache der Fehlermeldungen. Deinstallieren sollte in dem Fall dann reichen.

Habe die beiden Language Packs (für .NET und für .NET Client Profile) deinstalliert, nun sind die Meldungen trotz deutschem VS auf englisch 😃

06.07.2010 - 22:25 Uhr

Hallo,

ich nutze das deutsche VS 2010 Ultimate und das deutsche .NET 4 Framework. Ist es möglich, die Fehlermeldungen auf englisch umzustellen? Einmal in der IDE (da bräcuhte ich wahrscheinlich das englische VS?) und was mich viel mehr interessieren würde: Die Fehler, die als zusätzlcihe Beschreibung bei Exceptions enthalten sind, z.B.

Die Auflistung wurde geändert. Der Enumerationsvorgang kann möglicherweise nicht ausgeführt werden. wenn während einer foreach Schleife die durchlaufende Auflistung geändert wird. Diese Meldung hätte ich gerne auf englisch.

Danke für jeden Tipp!

P.S.: Reicht es für letzteres evtl. schon das englische VS 2010 zu installieren?

05.07.2010 - 20:57 Uhr

Hallo,

ich habe eine Klasse, die von ContextMenu erbt.
Innerhalb dieser Klasse will ich manuell das ContextMenuClosing Event auslösen.

Allerdings bekomme ich es einfach nicht hin, die beiden folgenden Wege habe ich versucht:

// Variante 1
RaiseEvent(new RoutedEventArgs(ContextMenuClosingEvent));

// Variante 2
OnContextMenuClosing(new ContextMenuEventArgs());

Variante 1 liefert mir zur Laufzeit den Fehler

Das Objekt mit dem Typ "System.Windows.RoutedEventArgs" kann nicht in den Typ "System.Windows.Controls.ContextMenuEventArgs" konvertiert werden.

Variante 2 liefert mir bereits während der Übersetzungszeit

Für den Typ "System.Windows.Controls.ContextMenuEventArgs" sind keine Konstruktoren definiert.

Was mache ich falsch bzw. wie kann das ich ContextMenuClosing Event nun in einer abgeleiteten Klasse manuell auslösen?

P.S. IsOpen = false setzen löst das ContextMenuClosing Event leider auch nicht aus ):

Schonmal vielen Dank für jede Hilfe!

02.05.2010 - 04:42 Uhr

Hallo,

ein Adorner erhält standardmäßig ja keine Keyboard Events.
Doch, ein Adorner ist ein ganz normales FrameworkElement und bekommt auch die ganzen Events.

Hmm das stimmt so nicht ganz - es ist zumindest default mäßig nicht so.
Für Keyboard Events ist folgendes nötig (beide Zeilen!):

adorner.Focusable=true;
Keyboard.Focus(adorner);

😃

01.05.2010 - 22:22 Uhr

mal eine frage zu (hosted) elms:
warum muss der admin dort sachen freischalten? was stört es microsoft oder den admin, wenn der user aus dem kompletten angebot selbst wählen kann? d.h. warum ist es überhaupt möglich einzuschränken, was angeboten wird?

26.04.2010 - 01:29 Uhr

Hallo,

ein Adorner erhält standardmäßig ja keine Keyboard Events. Lässt sich dies ändern, oder müsste ich letzten Endes die Events vom Programmfenster aus weiterleiten? Vielen Dank!

13.04.2010 - 14:26 Uhr

Hallo,

ich bin langsam wirklich am verzweifeln, ich habe eine DrawingGroup und möchte diese zu einem Canvas hinzufügen. Da DrawingGroup kein UIElement ist, geht das natürlich nicht. Kann mir bitte jemand einen Tipp geben, von welcher Klasse ich am besten ableite, damit ich am Ende soetwas machen kann:

canvas1.Children.Add(new klasseDieDrawingGroupDarstellt());

Ich benötige zudem Unterstützung für hit testing und Dependency Properties.

Vielen Dank für jeden Tipp!

12.04.2010 - 21:49 Uhr

hallo meisteralex,

danke für deine antwort.
habs nun, myBinding.Source muss das sourceobjekt sein, nicht die sourceproperty (die wird per path bzw. konstruktor angegeben). QuadraticBezierSegment stellt keine SetBinding Methode zur Verfügung (da es nicht von Framework oder was das nohmals ein musste erbt), daher BindingOperations.Setbinding(...)

11.04.2010 - 22:58 Uhr

Hallo,

ich möchte eine Datenbindung zwischen 2 Dependency Properties realisieren, hier zwischen QuadraticBezierSegment.Point1Property (Ziel) und ControlPointProperty (Quelle). Ich habe zurzeit folgenden Code, bei dem ich nicht weiß, was ich falsch mache:

 class DataBindingTest : DependencyObject
{
    // Dependency Property
    public static readonly DependencyProperty ControlPointProperty;


    // .NET wrapper
    public Point ControlPoint
    {
        get { return (Point)GetValue(DataBindingTest.ControlPointProperty); }
        set { SetValue(DataBindingTest.ControlPointProperty, value); }
    }


    // Register Dependency Property
    static DataBindingTest()
    {
        DataBindingTest.ControlPointProperty = DependencyProperty.Register("ControlPoint", typeof(Point), typeof(DataBindingTest));
    }


    public DataBindingTest()
    {
        QuadraticBezierSegment bezier = new QuadraticBezierSegment();

        // Binding
        Binding myBinding = new Binding();
        myBinding.Source = ControlPointProperty;
        BindingOperations.SetBinding(bezier, QuadraticBezierSegment.Point1Property, myBinding);

        // Test Binding: Change the binding source
        ControlPoint = new Point(1, 1);


        MessageBox.Show(bezier.Point1.ToString()); // gives (0,0), should be (1,1)
    }
}

Schonmal vielen Dank für jeden Tipp 😃

03.04.2010 - 23:21 Uhr

Hallo,

ich halts mal kurz: Vielen Dank an dich, MarsStein, fürs kontrollieren!
Und super vielen Dank an zommi für die wirklich sehr ausführliche Erklärung! Jetzt weiß ich nicht nur wie es richtig geht, sondern auch warum es zuvor falsch war! Funktioniert nun alles prima! (Ich arbeite übrigens ausschließlich mit quadratischen Bezierkurven, d.h. eine Tangente schneidet auch nur in einem Punkt).

So schauts nun aus beim Mittelpunkt (x=200) und ein Viertel (x=100) 😃
(Die Tangente für den Mittelpunkt geht hier ab dem Mittelpunkt los, hätte wohl auch mal weiter nach links zeichnen sollen...)

Stolperfalle: Gerade mit Steigung 0 nicht darstellbar (Höhe = 0!). Einfach "künstlich" einen Wert ≤1 beim Ziel Y dazu addieren!

03.04.2010 - 01:09 Uhr

Hallo,

ich habe eine quadratische Bezierkurve. Für einen beliebigen, gegebenen Punkt auf dieser Bezierkurve möchte ich die Steigung berechnen. Ich habe deshalb die erste Ableitung gebildet. Damit erhalte ich jedoch falsche Werte, obwohl ich mir eigentlich sicher bin, dass die Ableitung richtig ist (man findet sie auch so zumindest auf einer Seite im Netz). Ist es möglich, dass bei quadratischen Bezierkurven die Tangenten nicht einfach über die erste Ableitung bestimmt werden können? 🤔

Hier einmal meine Ableitung und Rechnung:
(siehe Anhang) Anmerkung: slope = Steigung

29.03.2010 - 02:43 Uhr

Aufbau:
Ein Fenster mit einem Grid und darin der Border, Standard VS 2008 Code (Fenstercode der Übersichtlichkeit halber weggelassen)

<Grid>
        <Border Width="200" Height="150" Name="border1" BorderThickness="1" BorderBrush="Silver" />
    </Grid>

Border "schmücken" (Window1.xaml.cs)

 private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            AdornerLayer layer = AdornerLayer.GetAdornerLayer(border1);
            layer.Add(new myAdorner(border1));
        }

Und der Adorner (myAdorner.cs)

class myAdorner : Adorner
    {
        public myAdorner(UIElement element)
            : base(element)
        {
            this.MouseDown += new System.Windows.Input.MouseButtonEventHandler(myAdorner_MouseDown);
        }


        void myAdorner_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            MessageBox.Show("ok");
        }


        // Draws two rectangles: one in the upper-left and another one in the lower-right corner
        protected override void OnRender(System.Windows.Media.DrawingContext drawingContext)
        {
            Size size = this.AdornedElement.RenderSize;

            Rect r1 = new Rect(0.5, 0.5, 20, 20);
            Rect r4 = new Rect(size.Width - 20.5, size.Height - 20.5, 20, 20);


            SolidColorBrush brush = new SolidColorBrush(Colors.AliceBlue);
            Pen pen = new Pen(Brushes.Black, 1);

            drawingContext.DrawRectangle(brush, pen, r1);
            drawingContext.DrawRectangle(brush, pen, r4);
        }
    }
29.03.2010 - 02:43 Uhr

Hallo,

ich habe einen Adorner, der einen Border (vgl. Screenshot) schmückt. Leider wird das MouseDown Event für den Adorner nur an den Stellen ausgelöst, an denen auch Elemente im Adorner platziert sind, d.h. bei Klick auf das linke obere und rechte untere Rechteck. Es wird jedoch nicht bei Klick z.B. zwischen den Rechtecken erfasst (vgl. Screenshot). Wie erreiche ich, dass auch hier das MouseDown Event ausgelöst wird? Vielen Dank!

Im 2. Post folgt gleich der Code und das VS 2008 Projekt zum schnellen Testen!

22.03.2010 - 20:35 Uhr

ah danke, nun klingelts. jetzt hab ich es doch wirklich auch mal geschafft, das ganze mit dem mathematischen koordsys. zu verwechseln 😉

22.03.2010 - 18:23 Uhr

Hallo,

danke für eure Antworten, ihr habt recht, die Frage war ungeschickt gestellt. Habe mich zusammen mit euren Hinweisen nochmal drangesetzt und z.B. diese Kurzschreibweise "M0,0 L0,1 0.1,1, 0.1,0Z" verstanden / einen MSDN Artikel dazu gefunden.

Einiges ist mir jedoch noch nicht so ganz klar:

<GeometryDrawing Geometry="M0,0 L1,0 1,0.1, 0,0.1Z " Brush="#CCCCFF" />

müsste doch eine Linie unten im Rechteck zeichnen, beide Geometrien müssten somit ein L darstellen? Setzt man die Border Thickness auf 0 sieht man jedoch, dass die beiden Geometrien ein F (ohne den Strich in der Mitte) bilden müssen, denn linken und oberen äußeren Rand ist ein Rahmen vorhanden, aber eben nichts rechts und unten?

22.03.2010 - 16:10 Uhr

Hmm habe mich wohl zu früh gefreut. Wenn ich die Linie per Canvas anordne, wird sie wieder antialiased!? Bin langsam echt am verzweifeln, kann doch nicht so schwer sein, einfach ein Grid ohne Antialiasing in ein Canvas zu zeichnen ):
Untenstehend der zugehörige Code, das Projekt hängt an und ein Screenshot folgt in wenigen Sekunden im nächsten Post.

      
               // LINE POSITIONED BY CANVAS -> LINE GETS BLURRY

                // Line
                LineGeometry line = new LineGeometry();
                line.StartPoint = new Point(0, 0);
                line.EndPoint = new Point(0, 100); 
  

                // Path
                Path myPath = new Path();
                myPath.Stroke = Brushes.Black;
                myPath.StrokeThickness = 5;
                myPath.SnapsToDevicePixels = true;
                line.Freeze();
            

                // Add to canvas
                myPath.Data = line;
                Canvas.SetLeft(myPath, 10); // LINE POSITIONED BY CANVAS:  x=10
                Canvas.SetTop(myPath, 0);  // LINE POSITIONED BY CANVAS 
                canvas1.SnapsToDevicePixels = true; // doesnt help
                canvas1.Children.Add(myPath);
                



                // LINE POSITIONED BY LINE GEOMETRY

                // Line
                LineGeometry line2 = new LineGeometry();
                line2.StartPoint = new Point(20, 0);  //LINE POSITIONED BY LINE GEOMETRY: x=20
                line2.EndPoint = new Point(20, 100); 


                // Path
                Path myPath2 = new Path();
                myPath2.Stroke = Brushes.Blue;
                myPath2.StrokeThickness = 5;
                myPath2.SnapsToDevicePixels = true;
                line2.Freeze();


                // Add to canvas
                myPath2.Data = line2;
                
                // Don't use the canvas for positioning
                //Canvas.SetTop(myPath, 10); //NEW
                //Canvas.SetLeft(myPath, 10); //NEW
                canvas1.Children.Add(myPath2);
21.03.2010 - 21:56 Uhr

Hallo,

kann mir jemand grob erklären, wie in diesem MSDN Beispiel der Grid Hintergrund erzeugt wird?
http://msdn.microsoft.com/de-de/library/system.windows.media.guidelineset.aspx

Der Code dafür scheint

<Border.Background>
      <DrawingBrush  Viewport="0,0,10,10" ViewportUnits="Absolute" TileMode="Tile"
        PresentationOptions:Freeze="True">
        <DrawingBrush.Drawing>
          <DrawingGroup>
            <GeometryDrawing Brush="White">
              <GeometryDrawing.Geometry>
                <RectangleGeometry Rect="0,0,1,1" />
              </GeometryDrawing.Geometry>
            </GeometryDrawing>
            <GeometryDrawing Geometry="M0,0 L1,0 1,0.1, 0,0.1Z " Brush="#CCCCFF" />
            <GeometryDrawing Geometry="M0,0 L0,1 0.1,1, 0.1,0Z" Brush="#CCCCFF" />
          </DrawingGroup>
        </DrawingBrush.Drawing>
      </DrawingBrush>    
    </Border.Background>

bzw.

 //
            // Use a DrawingBrush to create a grid background.
            //
            GeometryDrawing backgroundRectangleDrawing =
                new GeometryDrawing(
                    Brushes.White,
                    null,
                    new RectangleGeometry(new Rect(0,0,1,1))
                );
            PolyLineSegment backgroundLine1 = new PolyLineSegment();
            backgroundLine1.Points.Add(new Point(1, 0));
            backgroundLine1.Points.Add(new Point(1, 0.1));
            backgroundLine1.Points.Add(new Point(0, 0.1));
            PathFigure line1Figure = new PathFigure();
            line1Figure.Segments.Add(backgroundLine1);
            PathGeometry backgroundLine1Geometry = new PathGeometry();
            backgroundLine1Geometry.Figures.Add(line1Figure);
            GeometryDrawing backgroundLineDrawing1 = new GeometryDrawing(
                    new SolidColorBrush(Color.FromArgb(255,204,204,255)),
                    null,
                    backgroundLine1Geometry
                );
            PolyLineSegment backgroundLine2 = new PolyLineSegment();
            backgroundLine2.Points.Add(new Point(0, 1));
            backgroundLine2.Points.Add(new Point(0.1, 1));
            backgroundLine2.Points.Add(new Point(0.1, 0));
            PathFigure line2Figure = new PathFigure();
            line2Figure.Segments.Add(backgroundLine2);
            PathGeometry backgroundLine2Geometry = new PathGeometry();
            backgroundLine2Geometry.Figures.Add(line2Figure);
            GeometryDrawing backgroundLineDrawing2 = new GeometryDrawing(
                    new SolidColorBrush(Color.FromArgb(255, 204, 204, 255)),
                    null,
                    backgroundLine2Geometry
                );

            DrawingGroup backgroundGroup = new DrawingGroup();
            backgroundGroup.Children.Add(backgroundRectangleDrawing);
            backgroundGroup.Children.Add(backgroundLineDrawing1);
            backgroundGroup.Children.Add(backgroundLineDrawing2);

            DrawingBrush gridPatternBrush = new DrawingBrush(backgroundGroup);
            gridPatternBrush.Viewport = new Rect(0, 0, 10, 10);
            gridPatternBrush.ViewportUnits = BrushMappingMode.Absolute;
            gridPatternBrush.TileMode = TileMode.Tile;
            gridPatternBrush.Freeze();

zu sein, aber ich werde daraus nicht so richtig schlau!? Danke für eure Hilfe 😃

21.03.2010 - 21:53 Uhr

hallo winsharp,
danke für deine antwort. ich habe hier noch einen artikel gefunden, in dem die richtige antwort drinne steht:
http://www.wpftutorial.net/DrawOnPhysicalDevicePixels.html

Align the edges not the center points

The reason why the lines appear blurry, is that our points are center points of the lines not edges. With a pen width of 1 the edges are drawn excactly between two pixels.

21.03.2010 - 17:05 Uhr

hallo winsharp,

vielen dank für deine beiden tipps, funktioniert nun alles wie es soll 😃
ich verstehe nur nicht, warum auf eine gerade linie antialiasing angewendet wird bzw. wie diese zwischen pixeln liegen kann?

21.03.2010 - 05:23 Uhr

Hallo,

ich zeichne in einem Canvas mehrere Linien mit den selben Einstellungen, die Linien werden jedoch unterschiedlich dargestellt, vgl. Screenshot. Der Screenshot zeigt unterschiedliche Stellen des Canvas, der blaue Balken im Screenshot trennt die unterschiedlichen Darstellung der eigentlich gleichen Linien. Hier der genutzte Code zum Erzeugen der Linien:

 for (int i = 1; i <= 100; i++)
            {
                // Line
                LineGeometry line = new LineGeometry();
                line.StartPoint = new Point(i * 100, 0);
                line.EndPoint = new Point(i * 100, 100 * 100);
 
                // Path
                Path myPath = new Path();
                myPath.Stroke = Brushes.Black;
                myPath.StrokeThickness = 1;
                
                // Add to canvas
                myPath.Data = line;
                canvas1.Children.Add(myPath);
            }

Ist daran irgendwas falsch? Im Anhang auch nochmal mein Projekt, führt es doch bitte mal aus, maximiert das Fenster und scrollt etwas hin und her, ihr solltet das reproduzieren können : Vielen Dank!

20.03.2010 - 19:29 Uhr

Hallo,

ich frage mich gerade, wie man in ein Shape schreiebn kann?
Angenommen ich habe eine Elllipse und möchte in die mitte ein Wort schreiben, wie mache ich das? Vielen Dank!

30.09.2009 - 18:33 Uhr

Hallo,

ich möchte einen Border (oder evtl. auch ein Control ganz außen am Rand) beliebig groß bzw. klein ziehen können bzw. genereller gesagt per Maus anfassen können (kennen viele sicher von Bildbearbeitungsprogrammen, wenn man einen bestimmten Bildbereich auswählen kann - auf z.B. Codeproject gibt es dazu auch Beispiele, allerdings lässt sich die Auswahl dort nur durch anfassen an bestimmten Stellen in der Größe verändern).
Meine Frage ist, wie ich am besten prüfe, welche Borderseite per Maus bewegt wird. Einfach im Mousedown / Mousemove prüfen, ob z.B. x=0 ist (=rechte Seite) ? Oder gibt es da eine bessere Möglichkeit, irgendwelche Events pro Borderseite, die ich übersehen habe? (Ich will den Border / ein Control an jeder beliebigen Stelle einer Seite "anfassen" können, für bestimmte Punkte gäbe es ja Thumbs

30.09.2009 - 18:27 Uhr

Ah, mit ClipToBounds wird das alles schon etwas verständlicher, danke!

30.09.2009 - 18:12 Uhr

Hmm ich habe etwas falsch gedacht, ich will einen Adorner basteln, der es erlaubt, ein Rechteck zu vergrößern/kleinern und zu verschieben und mein Gedanke war dann z.B. ein Event namens Moving statt MouseMove, aber ich muss in MouseMove ja eh erst noch etwas Daten verarbeiten, da ist ein Alias dann doch das falsche und ich werde dann doch lieber ein neues Event feuern 😉

30.09.2009 - 18:04 Uhr

Ich muss zugeben, daran, mal bei der Basisklasse zu schauen, habe ich nicht gedacht. Aber ein guter Hinweis, werde ich mir merken 😃

30.09.2009 - 18:00 Uhr

Hallo talla,

vielen Dank für deine Antwort.
Das man in WPF einfach überall hinzeichen konnte wusste ich nicht, aber amche ich damit nicht mein Layout kaputt? WPF rechnet doch insbesondere bei Arrange damit, dass ich mich auch an den Platz halte, oder? Ich weiß, dass bei MeasureOverride ein größerer Wert dem Elternelement signalisiert, dass es doch noch etwas Platz "locker machen" soll (wenn es z.B. scrollabr ist), aber bei Arrange ist der zur Verfügung gestellte Platz doch schon final, oder? Also mehr nutzen würde schon gehn, aber wäre nicht so geschickt, da man evtl. andersweitig gedachten Platz nutzt?

30.09.2009 - 17:56 Uhr

Hallo talla,

vielen Dank für deine ausführliche Erklärung, hat mir sehr geholfen!

30.09.2009 - 17:56 Uhr

Hallo,

ist es mithilfe von Routed Events möglich, einem Event direkt einen Alias zu geben oder muss ich aus dem Originalevent heraus ein Event mit dem gewünschten Aliasnamen "feuern"? Aliasevents müsste man doch festlegen können, indem man eine Eigenschaft von Typ event oder so anlegt und bei get / set dann intern auf das Originalevent verweist? Weiß jemand, wie genau das geht?

Vielen Dank!

30.09.2009 - 17:22 Uhr

Hallo,

frage mich gerade, wann ich System.Windows.Shapes.Rectangle und wann System.Windows.Media.RectangleGeometry verwende? Mir ist nicht klar, worin sich beide unterscheiden.

Vielen Dank!

29.09.2009 - 22:01 Uhr

evtl. könntest du die grafik auch vorberechnen, je nachdem wie oft sich die daten ändern.

28.09.2009 - 15:44 Uhr

Hallo,

habe eine Verständnisfrage zu untenstehendem MSDN Beispiel zu FrameworkElement.ArrangeOverride.

[ Als Beispiel im folgenden angenommen: child.DesiredSize = 200 x 200 Einheiten ]

  1. MeasureOverride meldet als gewünschte Größe 200 x 200 Einheiten, da im Code
    panelDesiredSize = child.DesiredSize;
        }

        return panelDesiredSize ;
  1. ArrangeOverride nutzt letzten Endes mehr Platz: Das child Element wird ab 50/50 (x/y) positioniert und hat nach wie vor eine Größe von 200x200.
    (a) Also werden doch letzten Endes 250 x 250 Einheiten (je 50 + 200 Einheiten) an Platz benötigt?
    (b) Müsste nicht genau dieser Wert, 250 x 250, schon von MeasureOverride als erwünscht gemeldet werden?
    (c) Und müsste man in ArrangeOverride nicht überhaupt erstmal prüfen, ob man soviel Platz erhält, wie gewünscht?

Vielen Dank!

P.S.: Hier noch das vollständige Beispiel, aus
http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.arrangeoverride.aspx

public class PlotPanel : Panel
{
    // Default public constructor
    public PlotPanel()
        : base()
    {
    }

    // Override the default Measure method of Panel
    protected override Size MeasureOverride(Size availableSize)
    {
        Size panelDesiredSize = new Size();

        // In our example, we just have one child. 
        // Report that our panel requires just the size of its only child.
        foreach (UIElement child in InternalChildren)
        {
            child.Measure(availableSize);
            panelDesiredSize = child.DesiredSize;
        }

        return panelDesiredSize ;
    }
    protected override Size ArrangeOverride(Size finalSize)
    {
        foreach (UIElement child in InternalChildren)
        {
            double x = 50;
            double y = 50;

            child.Arrange(new Rect(new Point(x, y), child.DesiredSize));
        }
        return finalSize; // Returns the final Arranged size
    }
}

28.09.2009 - 14:03 Uhr

Laut HP Web-Seite hat dieser ein TN Panel drin
>

hmm wo liest du auf der HP Seite, dass das ein TN Panel ist? ich kann nur sagen, dass es definitiv kein TN ist, siehe prad http://www.prad.de/new/monitore/test-hp-lp2065-teil10.html#Bildqualitaet, geizhals http://geizhals.at/deutschland/a185586.html, meine eigene erfahrung und der preis, der für TN dann wieder verdammt teuer wäre 😉 (und welcher hersteller gibt auf billig tn 3 jahre vor ort service?)

28.09.2009 - 00:12 Uhr

da du eine hohe auflösung in der vertikalen wolltest:
habe hier einen HP LP2065, 1600x1200 auf 20", S-IPS Panel.
Bin sehr zufrieden mit, bekommt man inzwischen auch nachgeschmissen (280 EUR). Dürfte einer der billigeren S-IPS TFTs sein. Das 4:3 Format ist wohl nicht mehr ganz zeitgemäß, ich finds eigentlich super. Dumm nur wenn man mal auf 24" und 1920x1200 umsteigen will - da kommt mir alles pixelig vor. Ohne rumzurechenn behaupte ich mal, ich habe aktuell wohl eine höhere Pixeldichte als 24" mit gängier Auflösung.

edit:
und die 2 posts zuvor erwähnte pivot funktion hat er auch 😉

05.09.2009 - 12:47 Uhr

vielen dank für eure antworten, ich stimme euch zu, dass es wahrscheinlich nicht allzuschwer selbst zu machen ist, aber das genutzte control vom scandialog fand ich ziemlich perfekt und hatte gehofft das gibt es schon fertig. nunja, scheint ja nicht so oder keiner kennts 😄 falls doch jemand, dass es diese control von microsoft schon fertig gibt, bitte melden 😉
bevor ich mich mit irgendwelchen drittcontrols rumschlage, würde ich es dann notfalls doch selbst programmieren.

05.09.2009 - 08:56 Uhr

Hallo,

ich möchte ein Bild anzeigen, in dem ein beliebiger Bereich ausgewählt werden können soll. Gibt es das als fertiges Control? (Gibt es ein Programm, das mir bei fremden Programmen die genutzten Controls anzeigt?)

Z.B. Soetwas wie im folgenden Bild aus dem Windows Scan Dialog.
Das Auswahlrechteck kann man auch verschieben usw.

Vielen Dank!

02.09.2009 - 10:23 Uhr

haarrrgh, du kannst msdn für VS 08 SP1 unabh. von VS als standalone installieren. die bisherige msdn version deinstallieren, sonst gibts doppelte einrtäge.

02.09.2009 - 00:33 Uhr

Hallo,

wie kann ich denn Windows Symbole z.B. das des Druckers auslesen und in meiner Anwendung verwenden? (es geht mir nicht um die Symbole für diverse Dateiendungen)
Und wie sieht das eigentlich rechtlich aus, wird das von Microsoft gestattet?

Vielen Dank!

02.09.2009 - 00:18 Uhr

nachtrag zu 1)
habe nun einfach mal SP1 installiert, nun steht statt RTM SP da (allerdings nicht SP1) 😃

01.09.2009 - 22:37 Uhr

hallo lars,

vielen dank für deine antwort.

zu 1) dort habe ich bereits nachgeschaut, habe jedoch nur eine ewig lange versionsnummer. wird da den SP1 angefügt, wenn ich SP1 installiert habe?
Und bei mir steht RTM dran, ist das in der finalen Versionen normal? Sollte doch nicht der Fall sein, oder? (habe VS 08 Pro über MSDNAA / Elms bezogen, da stand leider nur VS 2008 dabei, sosnt keine weiteren Versionsinfos).

zu 2 und 3) Danke das habe ich erstmal umgestellt und Geschwindigkeitsmäßig macht es überraschenderweise nichts aus. Trotzdem würde mich interessieren, ob man irgendwie vorab alle Aktualisierungen runterladen kann?

edit:
ich muss 1) korrigieren, habe "erst online" ausgewählt und mit OK bestätigt, gehe ich wieder zurück in die einstellungen ist jedoch wieder "erst lokal" ausgewählt. nutze windows 7, evtl. stimmen da irgendwelche rechte nicht? bekomme allerdings auch keinen fehlerhinweis oder so ): [edit2: selbst wenn ich die msdn standalone extra als admin ausführe wirds nicht übernommen?]

01.09.2009 - 22:18 Uhr

irgendwie habe ich das wohl etwas verpeilt, ohne es jetzt getestet zu haen glaube ich dir mal, dass das funktioniert - vielen dank!

01.09.2009 - 22:17 Uhr

Hallo,

ich habe folgene Fragen zur Versionsermittlung / Aktualisierung von VS 2008 / MSDN 2008:

  1. Wie kann ich denn bei Visual Studio 2008 prüfen, ob ich das SP1 installiert habe?
  2. Woher weiß ich, welche Ausgabe der MSDN 2008 ich habe, z.b. ob es die Dezember Ausgabe ist? Und wie aktualisiere ich meine lokale MSDN am besten, gibt es da irgendeine Updatefunktion? Konnte irgendwie keine finden.
  3. Was ist denn die aktuellste MSDN Version? Konnte als aktuellstes nur Dezember 2008 finden, das scheint mir insbesondeer wegen Windows 7 etwas veraltet? Brauch man irgendwelche MSDN / Microsoft Mitgliedschaften, um an aktueller MSDN Versionen zu gelangen?

Vielen Dank!

01.09.2009 - 22:02 Uhr

Hallo,

ist es möglich die einzelnen Elemente einer Enum zu dokumentieren, so dass deren Beschreibung in IntelliSense auftaucht? Falls nein, gibt es eine Datenstrukur die man so nutzen könnte?

Vielen Dank!

25.08.2009 - 12:11 Uhr

hallo,

vielen dank für eure antwort.

ich habe mir letzten endes ein günstiges (und vor allem nicht so ein dicker schmöker) c buch gekauft:
http://www.amazon.de/Programmieren-von-Anfang-Helmut-Erlenkötter/dp/3499600749/ (das c buch, c++ vom selben autor)
das buch von kernighan scheint wohl auch sehr gut zu sein und nicht länger, sogar noch ein paar seiten kürzer. nunja, jetzt habe ich schon die anderen beiden [habe noch das c++ buch von erlenkötter mitgekauft] bücher gekauft, hoffe die taugen was, dann habe ich endlich mal was zu c und c++.

ich habe hier noch eine einführung in die win32 api gefunden, die einen guten eindruck macht:
http://www.pronix.de/pronix-1023.html

24.08.2009 - 20:53 Uhr

Hallo,

ich möchte C++ lernen, vor allem mit dem Ziel, direkt die WinApi zu nutzen. Leider konnte ich bisher nicht wirklich Bücher finden, die in beides einführen. Hat da jemand einen Tipp? Vielen Dank!

24.08.2009 - 03:40 Uhr

Hallo,

ist es denn mit Winforms oder WPF möglich, einen Fensterinhalt dynamisch auszutauschen bzw. zu überlagern? Mir geht es vor allem darum, dass ich die Fensterinhalt zuvor im Designer zusammenklicken kann.
Im Endeffekt brauche ich soetwas wie Tabs, nur statt dass der User Tabs anklickt, will ich per Code den Fensterinhalt austauschen. Nur eben ohne jedes Control im Code manuell setzen zu müssen und optimalerweise so, dass evtl. getätigte Eingaben erhalten bleiben, ich also z.b. von Fensterinhalt A zu Fensterinhalt B wechseln kann und wenn ich dann wieder zu Fensterinhalt A wechsle, diese noch / wieder vorhanden sind.

Vielen Dank!

Edit: Ich hätte mal davor googlen sollen, mit WPF geht das wohl problemlos - aber wie schauts mit Winforms aus?

21.08.2009 - 01:10 Uhr

Hallo,

ich suche nun schon seit 2 Tagen verzweifelt Beispiele zu WIA Automation in C#, insbesondere für das ansprechen von Scannern. Leider habe ich bisher nicht wirklich etwas gefunden, selbst die MSDN war nicht hilfreich.
Kann mir da bitte jemand helfen?

Vielen Dank!

20.08.2009 - 05:52 Uhr

Hallo,

ich suche ein Buch über Bildverarbeitung Richtung Dokumentenverwaltung, z.B. wie entwickle ich selbst ein OCR System, Dokumente für die digitale Archivierung "aufhübschen", z.B. Hintergrund erkennen und wirklich weiß machen statt halb grau usw...

Kann da jemand etwas empfehlen? Gerne auch auf englisch.

Schonmal vielen Dank!