Laden...
S
Stu42 myCSharp.de - Member
Softwareentwickler Aus dem Norden Dabei seit 15.10.2006 506 Beiträge
Benutzerbeschreibung

Forenbeiträge von Stu42 Ingesamt 506 Beiträge

12.12.2007 - 10:24 Uhr

mhhh das ist wirklich komisch. Hast du mal deine messdaten kontrolliert, ob das nicht doch richtig dargestellt wird?

Ich hab leider keine ahnung wo der unterschied von eine RollingPointPairList zu einer "normalen" PointPairList ist. Aber hast du mal probiert ne andere Punktliste zu nehmen?

12.12.2007 - 10:18 Uhr

du kannst nem Setup projekt Installationsbedingen einfügen. Und da kannst du auch angeben ob das framework installiert sein muss. Musst mal die eigenschaften des Projekttypes durchsuchen

12.12.2007 - 10:16 Uhr

1: für den ZedGraph gibts ne hilfe, in der musst du mal nachlesen.

2: Eine Bar object hat für die beschriftung nen FontSpec object, welches eine eigenschaft für den rotationswinkel hat.

27.11.2007 - 12:01 Uhr

ah! ja! genau! sowas hab ich gesucht... vielen dank!

27.11.2007 - 10:54 Uhr

Hallo,

ich habe ein Mathematisches problem welches ich nicht lösen kann.

Ich habe eine Gerade welche durch 2 Punkte beschrieben ist.

Diese Gerade möchte ich nun mit einem Farbverlauf füllen, welcher einen winkel hat, der um 90° größer als der Winkel der Geraden ist.

Die richtung der Gerade errechne ich mir so:

X = (p2.x - p1.X ) / (p2.Y - p1-Y)
Y = (p2.Y - p1.Y ) / (p2.X - p1-X)

Nun möchte ich mir also aus dieses Richtung, den winkel errechnen.

Wie mache ich sowas? Muss ich mir eine Hilfgerade errechnen, welche meine Gerade Senkrecht schneite, und dann den winkel zwischen den beiden gerade?

Gruß Stu

05.11.2007 - 09:34 Uhr

ja ich habe nicht gewusst das man auch "nur" das "Treffenzeichen" für eine kultur verändern kann.

Solange sich dabei nicht die sprache verändern, ist das natürlich alles ok.

Danke für den Tip, werd ich gleich mal probieren.

05.11.2007 - 09:30 Uhr

ja dafür musste du keine api einbinden, das kann das .NET-Framework auch so.

nimm mal die eigenschaft "ClientRectangle" einer Form.

mit PointToClient oder PointToScreen kannst du die koordinaten dann transformieren.

05.11.2007 - 09:22 Uhr

Hallo,

weil es ja "so verwirrend ist", das man auf einer deutschen Programmversion zahlen mit "," statt mit "." trennt (wegen der Kulturabhängigen eingabe) , wurde beschlossen das ich bitte alle eingaben auf Englisch, also mit Dezimalpunkt , einlese.

Wie ich zahlen in einem Englischen format konvertieren kann, ist mir klar, einfach über den iFormatProvider der jeweiligen toString und Parse funktion.

Nur wie mache ich das bei "NumericUpDown" Controls?

Also ich habe ein NumericUpDown-Control in einem "deutschen-thread". D.h das Zahlenformat im NumericUpDown ist auch auf deutsch. Nun will ich aber, dass das NumericUpDown ein englisches eingabeformat hat, ohne die Thread-Culture zu verändern.

Ist sowas möglich?

Gruß Stu

EDIT: Kann ich wärend der Laufzeit die Culture von einzelt COntrols verändern?

01.11.2007 - 12:01 Uhr

die myDevice.Transform-matrix bezieht sich ja immer auf den aktuellen rendervorgang.

Du brauchst mehrere Matrizen.

z.b. So:

//Terrain:
1: Terrain Matrix setzen
2: Terrain zeichnen

//Figur:
3: Figur Matrix setzen
4: Figurzeichnen
.... usw..

31.10.2007 - 20:41 Uhr

private wäre das viel zu viel arbeit.... die software wird schon verkauft. Aber höchstwahrscheinlich werden auf dem rechner wo die läuft nicht viele andere programm laufen.

31.10.2007 - 13:21 Uhr

mhh, da müsste man überlegen ob diese warnung unter vista auch noch gültig ist.

Vista hat ja bereits von sich aus das .Net 3.0 Framework vorinstalliert.

31.10.2007 - 11:16 Uhr

Hallo,

ihr kennt doch sicherlicht die "Miniaturansicht" in einem "OpenFileDialog". Wo man z.B. Bilder als vorschau sehen kann. Eben ist mir aufgefallen das mir "PDF´s" in der Miniaturansicht auch angezeigt werden.

D.h es muss möglich sein, da auch eine Miniaturansicht für seine eigenen Dateitypen einzubauen.

Hat jemand eine Ahnung wie sowas funktiert?

Gruß Stu

10.10.2007 - 08:59 Uhr

ahh ich werd verrückt. So einfach kann es sein! Herrlich.

Ja vielen dank!! nun kann ich weiter machen.

10.10.2007 - 08:42 Uhr

aber man kann doch keine dicke linie einem GraficPath zuordnen oder?

Ich sehe da nur die Funktion "AddLine", welche aber nur die Punkte einer linie einfügt, und nicht auch noch die dicke.

10.10.2007 - 08:27 Uhr

joa mhhh...

so wie ich mir das mit der Animation gedacht habe, werde ich aber den "Rohr-GraficPath" brauchen, um ihn auch noch als Clip Region zu benutzen.

09.10.2007 - 15:48 Uhr

Hallo,

ich werd schon wieder bekloppt, weil ich es nicht hinbekomme. Ich möchte Rohre zeichnen. Also ich habe Eckpunkte einer Linie, und möchte aus diesen Linieneckpunkten ein Rohr zeichnen.

Später möchte ich in diesen Rohren noch die "Flussrichtung" mittels einer animation anzeigen.

Mein aktueller Ansatz ist, das "Rohr" als GraficPath zu erstellen. Immoment mache ich mir es einfach , und verschiebe die Linieneckpunkte jeweils nach Oben, und nach unten, damit aus der Linie ein ROhr wird.

Abgesehen davon, das einzelne Rohrstücke ungleich dick erscheinen, wird ein wechsel der "Rohrrichtung" falsch dargestellt.

Wenn ich meinen Ansatz nun weiter auspräge, wird das ein erheblicher aufwand, da ich quai alle Eckpunkte korrigieren muss.

Gibt es vieleicht eine anderen, bzw eine einfachere Möglichkeit ein Rohr zu zeichnen?

Gruß Stu

09.10.2007 - 12:11 Uhr

danke für deine Antwort.

Hat bei mir leider nicht Funktioniert, fehlt da nicht auch die länge der neuen Gerade?

Naja wie auch immer, ich habs nun anderst gelöst:

Matrix TransformationMatrix = new Matrix();
 //Linie Rotieren
 TransformationMatrix.RotateAt(90, line[0]);
 TransformationMatrix.TransformPoints(line);
09.10.2007 - 11:05 Uhr

ja das problem ist, ich will das in einem GraficPath haben.

Und eine Transformation vom Path bezieht sich ja immer auf alle Punkte.

09.10.2007 - 10:57 Uhr

Hallo,

ich habe eine Linie, und möchte an dessen Ende eine 90° Linie Anhängen.

Aber ich komme einfach nicht drauf, wie ich es berechnen soll.

Also den neuen Punkt der 90° verschoben Linie.

Hat jemand eine Idee?

Gruß Stu

EDIT:

Ist 90° = die negative steigung der Linie?

also - (x2 - x1) / (y2-y1) ? Oder ist eine Liniargleichung der falsche ansatz?

08.10.2007 - 12:44 Uhr

mit nem Screenshot kannst du das nicht machen, da du sonst erst das Fenster öffnen musst.

Über eine PictureBox geht das leider auch nicht, da man nicht an das Bild kommt.
Anscheinend Zeichnen DirectX direkt auf den Screen-buffer.

08.10.2007 - 11:11 Uhr

Hallo,

ich habe eine Darstellung von 3D Daten. Diese Darstellung ist mit DirectX erstellt. Nun möchte ich diese Darstellung aber Drucken. Zum drucken müsste ich meine Zeichnung bzw meine DirectX-Ausgabe ja auf eine GDI+ bzw auf ein "Graphics" zeichnen.

Hat jemand eine Idee wie ich so etwas anstellen kann? Also mein DirectX Bild auf einen "normalen" Kontext zu zeichnen?

Gruß Stu

08.10.2007 - 09:58 Uhr

so wie ich das verstehe, brauchst du das nur zum speichern oder?

Eine einfache möglichkeit, die mir spontan einfällt, wäre folgende:

Dein String ist ja wohl UNI code.

D.h 2 Byte pro Char.

Du könntest den string einfach in ASCII (1Byte pro char) wandeln. Damit wäre der String nur noch Halb so groß.

25.09.2007 - 16:04 Uhr

nein .

Statische Methode können nicht auf Member zugreifen.

Du kannst der Methode höchstens eine Referenz auf ein Object der klasse geben.

Aber das wäre bei dir der falsche ansatz.

25.09.2007 - 10:41 Uhr

ah vielen dank, das hatte ich gesucht.

25.09.2007 - 09:57 Uhr

ja richtig, überschreiben von funktionen geht in C++ mit virtual.

AAABBER

das ist ja Managed C++, und da gibts dann noch andere extenstions. Ich bin mir nicht sicher, aber ich vermute du hast nen modifeyer vergessen.

hast du

SystemWindowsForms::ListBox:👍nPaint(e);

mal rausgenommen?

25.09.2007 - 09:45 Uhr

Hallo,

ich habe eine Vererbungshirachie.

classA
classB
classC

nun mache ich mir vom typ "classB" ein type, also:

Type t = typeof(classB);

Nun möchte ich aber abfrage, ob der oben deklarierte Type "t" ein "classA" ist.

Wie mache ich sowas?

if(t == typeof(classA)) 

geht natürlich schief, da es ja "classB" ist.

und mit "is" kommt macht auch nicht weiter, da der Type "t" ja ein "Type" ist.

Hat jemand eine Idee?

Danke,
Gruß Stu

18.09.2007 - 11:28 Uhr

ja ich mir auch nicht! War ein dummer fehler meinerseits!

Ich hab ein Event von einem Sub-Control genommen.

Am besten das Thema hier wieder löschen, da es nichts an Informationen enthällt.

18.09.2007 - 10:45 Uhr

Hallo,

ich habe ein UserControl welches mittels DockStyle.Fill an meine Form angedockt ist.

In meinem UserControl habe ich das Resize Event implementiert. Diese Resize Event in meinem UserControl wird aber komischer weise nur aufgerufen, wenn sich die Höhe ändert und **nicht **wenn sich die Breite ändert.

Warum ist das so?

Hab ich was falsch gemacht? das ist ja sonst nicht so.

Gruß STu

14.09.2007 - 16:07 Uhr

scheiss kaffee! trinke ich auch nicht!

Dafür aber morgens eine Koffeintablette damit ich beim Zähneputzen in die pötte komme!

13.09.2007 - 09:52 Uhr

nein, ist mir noch nicht passiert.

Auf windows CE läuft doch bestimmt ds CompactFramework oder? Schau mal ob deine benutzen Funktionen kompatible sind.

13.09.2007 - 09:40 Uhr

mhh mein Problem ist leider nicht dabei. Naja ich werd das event dann wohl ausbauen, da es ohne dem ja geht.

12.09.2007 - 10:17 Uhr

ja das hast du schon richtig gemacht.

"object" als schlüsselwort ist eine "unbestimmte" referenz. Bzw die Basisreferenz einer jeden klasse.

D.h jede klasse kannst du mit "object" referenzieren.

PS.

Void Pointer gibts es schon. Musst aber unsafe arbeiten, und ich glaube willst du nicht...

12.09.2007 - 09:53 Uhr

also 2teres. "Meine" Dll ist natürlich im verzeichnis, aber meine Dll (MyDll) referenziert halt noch den XmlSerializers ( MyDLL.XMlSerializers) .

Und wie gesagt, die DLL wird halt gefunden, aber nicht sofort...

12.09.2007 - 08:31 Uhr

aber das Ereignis wird bei mir aufgerufen, obwohl die DLL da ist. Aber er findet sie irgentwie erst beim 2ten oder 3tem aufruf von dem Ereignis.

Naja dann muss ich das wohl wieder ausbauen.

11.09.2007 - 14:47 Uhr

ja so ist das aber mit dem Drucken.... du kannst nicht einfach so Text drucken... du musst den Text schon auf nen Drucker DC zeichnen....

Aber wo ist da das Problem? Mit DrawString doch alles kein Problem. Musst nur auf zeilenumbruch achten.

11.09.2007 - 14:13 Uhr

nein leider nicht. Die methode bezieht sich ja auf eine Datei.

Ich hab aber nur so nen String von den EventArgs.

11.09.2007 - 13:12 Uhr

Hallo,

ich benutze das AppDomain.AssemblyResolve-Ereignis um festzustellen ob eine DLL fehllt. Fehlt eine DLL beende ich das Programm.

Doch dieses event wird auch so aufgerufen. Nun habe ich folgenden Fall, dass ich eine DLL einbinde, die selbst einen XMLSerializer benutzt. Und irgentwie schafft er es nicht , das Assabmly (MyDll.XmlSerializers) beim ersten mal aufzulösen, also Ruft er das Event auf.

So nun meine Frage:

Was macht man eigentlich in dem "AppDomain.AssemblyResolve-Ereignis" ? Muss man den Typen dann selbst laden, und erst eine Fehlermeldung machen, wenn auch dies fehlschlug?

Gruß Stu

EDIT:
in der MSDN steht:

static Assembly MyResolveEventHandler(object sender, ResolveEventArgs args) {
      Console.WriteLine("Resolving...");
      return typeof(MyType).Assembly;
   }

Aber das kann ich ja schlecht übertrage, da ich den Namen des aufzulösenden Assamblys nur als String kenne.

10.09.2007 - 15:34 Uhr

ich glaube nicht das es sowas gibt!

Das schreiben einer TIFF datei ist ja kein problem, das kannst du über Grapfics.save machen.

Für PDF kannst du bestimmt nen ActiveX nehmen, und das als dc ausgeben.
Text kannst du ja auch einfach in nen dc Zeichnen...

07.09.2007 - 14:08 Uhr

Das Problem ist wahrscheinlich, daß in den meisten Fällen das große Bitmap geladen wird und gleich wieder im Auslagerungsspeicher auf die Festplatte geschrieben wird. Deshalb dauert das Zerschneiden auch so lange.

das ist durchaus möglich.

Halte ich hier für unwahrscheinlich

dann müsste das bild aber mehrere Hundert MB sein.... die Auslagerungsdatei wird ja erst geschrieben, wenn der speicher voll, oder nicht mehr benötigt wird.

Und vom ansatz her wäre es volkommen falsch, ein beispielsweise 800mb großs bild am start in den Speicher zu laden.

Da müsste man dann teile immer wieder neu laden.

07.09.2007 - 13:59 Uhr

die lade zeit ist doch egal, denn das machst du ja nur einmal am Start! dann ist es im speicher, und dann kannst du dir ja verschiedene Teile aus dem Bild (welches auf de, DC liegt) herauspicken...

Ich verstehe auch irgentwie dein Problem nicht.

Du willst eigentlich nur eine große bitmap darstellen, die man scrollen kann, oder?

Wo ist da denn nun das Problem, kannst du die Bitmap micht laden? Oder hast du sie schon geladen, aber kannst sie nicht flüssig darstellen?

07.09.2007 - 12:25 Uhr

Also ich weiß, das BitBlt sehr performant ist. Ich bin mir auch sicher, das es performanter sein wird, als das DrawImage. Die frage ist nur, ob es performant genug ist...

Aber das verfahren von BitBlt ist ja auch anderst. Es verschiebt (Flippt) ja nur Daten von einen DC auf einen anderen.

Hast du dir das Bild denn schon auf Offscreen DC zusammen gepuzzelt?

Wenn ja ist es doch kein Problem das mal eben zu Testen....

Aber wie willst du das Bild denn wieder aus dem DC bekommen? Als PNG speichern? wenn du es so machst, ist es natürlich klar, das es langasm läuft.

Du darfst natürlich nur im Speicher arbeiten

07.09.2007 - 11:52 Uhr

ist die Bitmap doch erstma im speicher, solltest du mit DrawImage doch keine Probleme bekommen.

Denn selbst wenn du wenn die Bitmap 1024*786 groß ist, wirst du sie doch immer Flimmerfrei zeichnen können. Gerade wenn sie noch im Grafik speicher ist.

Wenn du natürlich für jeden Frame die Daten aus der Datei-hohlst, sieht es natürlich anderst aus.

Mach die doch einfach nen Offscreen DC oder Device, wo du dir die Bitmap zusammen puzzelst, und dann Blittest du immer die DC Teile um.

Die APi dazu heißt ja BitBlt... damit muss es gehen

04.09.2007 - 13:22 Uhr

GetThumbnail (oder so) von Image....

Geht aber auch mit DrawImage.... größer zeichnen, ausrichten und Weg-clippen

04.09.2007 - 10:22 Uhr
v
void _BodyScrollBar_GotFocus(object sender, EventArgs e)
{
     Focus();
 }

Dirty, Dirty, aber funkioniert. Danke.

04.09.2007 - 09:55 Uhr

also mit dem

this.SetStyle(ControlStyles.Selectable, true);  

Geht es nur teilweise...

Ich habe auf meinem UserControl eine ScrollBar. Hat diese einmal den focus erhalten, bekommst mein UserControl keine KeyEvents mehr, da wie von herbivore vermutet, es keinen Focus hat.

Wie löst man das Problem?

Explizietes "Focus()" setzen bei Mausaktivität funtkioniert auch nicht. Kann ich den Focus der Scrollbar irgentwie verweigern?

Ich könnte natürlich das KeyEvent weiterleiten, aber das wäre auch nicht das richtige, da ich das Event ja gar nicht auf der ScrollBar ausgeführt haben will

04.09.2007 - 08:38 Uhr

du willst nen Point auf ne function zurück geben?

Dann musst du die nen FUnction schreiben, die diesen Pointer zurückgibt. Diese Pointer kannst du dann in C# in einen Delegaten casten...

Edit:
Mittels GetDelegateForFunctionPointer.

den type "Type" musst du dir dann dem entsprechend noch deklarieren

Edit2:
Den Pointer im DLL import musst du dann als IntPtr deklarieren

04.09.2007 - 08:30 Uhr

ist _uint8 nen byte? dann halt

ref byte variable

wenn es nen array ist, musst du das mit LPArray casten

04.09.2007 - 08:28 Uhr

ja das mit dem focus ist mir schon klar... ich hab auch immer schön reingeklickt...

mit dem tip von Sisyphus gehts es aber! danke... komisch warum ich die Flag diesma manuell setzen musste.... normal ist die ja standart.

03.09.2007 - 15:46 Uhr

Hallo,

Ich hab ne Form, darauf ist ein UserControl, wechles wieder ein UserControl hat.

Nun möchten ich wissen ob ein Benutzer eine Taste gedrückt hat, also füge ich dem Untergeordnetem Control den Eventhandler OnKeyDown hinzu... Doch egal was ich drücke, er wird nicht aufgerufen....

Woran kann das liegen? Die Verschachtelung sollte doch egal sein..

Ich bin Ratlos...

Gruß Stu

02.09.2007 - 20:01 Uhr

wie willst du ziwschen forms denn hin und her schalten? dein Focus verteilen?

Du kannst aber UserContols machen, welche du dann auf der Form anzeigen kannst.