Mit SlimDX habe ich das schon versucht, bzw ein Beispiel runtergeladen (http://spazzarama.wordpress.com/2011/03/14/c-screen-capture-and-overlays-for-direct3d-9-10-and-11-using-api-hooks/). Leider hängt sich das Programm beim Inject auf (Die Assembly "ScreenshotInject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6003822b3ebd1393" kann nicht gefunden werden). Ich bin in C# und directX nicht so fit um herauszufinden, woran es liegt. Ich komme aus der Java Ecke, aber das ist auch schon paar Jährchen her.
Eigentlich wollte ich auf die schnelle ein kleines Tool schreiben. Das hat auch so weit funktioniert. Nur leider kann man kein Form vor ein im Vollbildmodus laufendes Spiel setzen. Und selbst wenn, es würde nicht von Fraps erfasst werden. Und so erweist sich das, was mal ein kleine Tool sein sollte, als immer anspruchsvoller.
Ich bin schon am überlegen, ob ich die Informationen nicht mit einem Timer im Hintergrund speichere, und wenn ich fertig bin es dann abspiele und separat aufnehme. Da wäre aber auf die Dauer zu umständlich.
Dem Windows Service eine UI zu verpassen ist indirekt über WCF möglich, dann muss der WS diese dem Client als Server(WCF Service) anbieten. Also alles was die UI über den aktuellen Status der WS wissen möchte. Wenn es nur um das Starten und Stoppen/Pause geht, steht in VS für die UI (Client) ein SystemProcess.ServiceController zur Verfügung der im Grunde nichts weiter ist, als eine programmierbare Version des Dienste-Verwaltungs-Fenster der Systemsteuerung, also Starten/Stoppen/Pause/Contiune.
Wie gesagt, wenn mehr Informationen und Konfigurationsmöglichkeiten für einen WS benötigt werden, ist ein WCF Serivce eine brauchbare (oder bessere) Möglichkeit (Alternative) zu direktem Interop wie Pipes, COM, CORBA, etc...
Moin moin,
ich arbeite mich momentan etwas in C# und die WPF ein und habe ein kleines Verständnisproblem bzgl. der Transformationslogik von Objekten.
Ziel ist es, mir einen kleinen Viewer für 3D-Modelle zu basteln. Dazu hab ich einen Viewport3D, in denen einige Modelle (ModelVisual3D) liegen und die ich - abhängig von der Benutzereingabe - entsprechend transformieren möchte. Meine bisherige Erfahrung mit 3D-APIs/Engines/Frameworks war immer die, dass man die Transformation durch schlichtes Setzen einer Transformationsmatrix bewerkstelligen konnte, die dann auf eine Menge von Vertices angewandt wurde.
Nun habe ich einigen Artikeln entnehmen können, dass die Transformationen direkt am zu transformierenden Objekt gesetzt werden können, etwa so:
ModelVisual3D model = new ModelVisual3D();
... // Fülle model
var rotate = new RotateTransform3D (new AxisAngleRotation3D(new Vector3D(1,0,0),10));
model.Transform = rotate;
die dann am Objekt auch als State erhalten bleiben.
Da ich noch nicht wirklich den Überblick über alle möglichen Alternativen habe, frage ich an dieser Stelle mal naiv nach, welches denn die beste Möglichkeit darstellt, um Objekte zu transformieren:
(i) Ändere für jede Benutzereingabe die am Objekt gespeicherte Transformation entsprechend der Benutzereingabe? (schien mir etwas zu kompliziert)
(ii) Benutze das Animationssystem?
(iii) andere Möglichkeit... ?
Hi,
wünsch euch allen ein paar schöne Feiertage.
Hab leider nicht viel Zeit zum Feiern, das Abschlussprojekt ruft.
Hoffe aber Ihr könnt mir helfen.
Wenn ich ein leeres Window ein DataSet per Drag&Drop reinziehe, dann erstellt mir der Designer automatisch den XAML-Code und den C#-Code in der Code-Behind-Datei.
Wenn ich die gleiche Vorgehensweise bei einer Page versuche, erstellt er zwar den XAML-Code, jedoch nicht die Code-Behind-Datei.
Kann mir jemand erklären wieso und ob sich das irgendwie ändern oder umgehen lässt ?
Liebe Grüße :xmas1:
Hat sich erledigt, hab mich nochmals mit der Materie befasst und habe es nun wohl begriffen. War gestern wohl einfach ein wenig zu viel auf einmal
Grüssli
Hallo zusammen,
hat irgendjemand eine Idee, wo man eine verständliche Erklärung was bei ASP.NET Seiten in der web.config (und vor allem WARUM) stehen sollte finden kann ? Leider wird in den meisten Fachbüchern darüber so gut wie nichts gesagt und sobald man die fertige Seite auf den Server laden will geht nichts mehr.
Danke schonmmal im vorraus
Corax
Dravere schrieb:
Was spricht denn gegen sowas?
public class PersonViewModel
{
private List<AddressViewModel> m_addresses;
public IEnumerable<AddressViewModel> Addresses { get { return m_addresses; } }
}
Grüssli
Dagegen spricht das bestimmte Informationen erst später (sowohl bezogen auf die Laufzeit als auch bezogen auf die Entwicklung) hinzu kommen und konfigurierbar sind.
Bei mir gibt es beispielsweise einen Kontakt, was in der Regel eine Firma oder eine Person ist, die beliebige Adressen hat (soweit noch einfach), nun gibt es aber viele Teile die nur mit bestimmen Erweiterungen und einer bestimmten Rolle Sinn machen (z.B. Wenn es sich bei den Kontakt um einen Dozenten handelt noch Informationen wie die zu leistenden Veranstaltungsstunden...; Datenbankseitig sieht dies so aus das die abhängigen Elemente auf den Basisdatensatz verweisen).
Hier bietet sich vom bisherigen Verständnis Prism recht gut an, da ich ein sehr modularen Ansatz verfolge. Ich bin inzwischen so weit, das ich glaube die Lösung gefunden zu haben. In Prism kann man einer Region die aus mehreren Views besteht gemeinsame Daten über einen RegionContext halten (In meinen Fall beispielsweise einen Verweis auf den jeweiligen Basisdatensatz und beispielsweise den DbContext zu halten, über den die Speicherung erfolgt...).
juhu
Merkwürdiger Weise hatte ich erst noch das _KeyDown -Event drin. Bei dem hat e.Handled = true; nichts gebracht. Beim _KeyPress -Event gehts aber.
Vielen Dank!
Ich lese nicht wer Fragen stellt, da sowas irrelevant ist.
Googlen: http://www.google.de/search?sourceid=chrome&ie=UTF-8&q=Application.Idle+wpf
Erste Ergebnis führt zu Stackoverflow: http://stackoverflow.com/questions/2344398/application-idle-event-not-firing-in-wpf-application
Da ist ein Link zu: http://msdn.microsoft.com/en-us/library/aa348549.aspx
Dort nach Idle schauen und schon stößt man auf das: http://msdn.microsoft.com/en-us/library/system.windows.interop.componentdispatcher.threadidle.aspx
Es war so einfach zu finden, und die Fragestellung war so kurz und knapp, das roch alles danach als hattest du keine Lust selber mal zu Recherchieren.
Es gibt im Framework mittlerweile mindestens 4 Timer und anscheinend meinst du den Timer in System.Windows.Forms. Der und das WPF Pendant DispatcherTimer sind die einzigen beiden die Arbeit standardmäßig im GUI Thread ausführen. Die eigentlichen Timer in System.Timers und Sytem.Threading tun das nicht. Beide nutzen Threads aus dem Threadpool für die entsprechende Arbeit. Man brauch nie eigene Threads dazu, man muss nur den richtigen Timer verwenden.
Eigene Threads haben das Problem, das man eigentlich gar keinen genauen Timer bauen kann. Man unterliegt immer dem Wirkungsbreich des Threadschedulers. Die Standardvariante mit Thread.Sleep hat das große Problem das Sleep nur ne Mindestwartezeit angibt, die reale Zeit, wann der Thread wieder rankommt durch den Scheduler, kann wesentlich größer ausfallen. (Okay, bei Schlafzeiten im Sekundenbereich fällts nicht auf :))
Die richtigen Timer benutzen dagegen die Hardwaremöglichkeiten für Timer die jeder PC bietet.
Okay Leute, es funktioniert soweit!
Aber jetzt habe ich ein neues Problem. In den C#-Projekten benutze ich Verweise auf eigene dll's und solche von der Software, von der ich redete. Das funktioniert wunderbar im Zielverzeichnes beim Kompilieren des Projekts, wenn ich die dll's und mein Programm nun aber woanders hinkopiere, dann bekomme ich Fehlermeldungen, weil die Assemblies sich sozusagen im Pfad unterscheiden. Vielleicht kennt ihr solche Probleme ja schon. Gibt es dazu eine einfache Lösung? Ich müsste das ganze ja auf meinem Arbeitsrechner ausführen, der zudem die Zielsoftware und deren dll's an einer ganz anderen Stelle installiert hat.
Viele Grüße,
Michael
Ich nehm sobald ich Concatenieren muss immer ein Builder.
In den seltensten fällen müsste ich das, sei es weil es keine Auswirkungen auf die Performance hat oder es weniger als 3 sind.
Ich mach es einfach damit es simpel ist und man nicht nachdenken muss.
- Warum der Builder da aber hier nicht
- Kann ich da es verbinden oder muss ich den Builder nehmen
lalala - mir alles egal, immer Builder und feddich.
Wenn nicht der Builder bietet sich natürlich auch das string.Format an.
var sql = string.Format("{0} {1} {2}",
"SELECT *",
"FROM dual",
"WHERE 1=1");
So meinte ich, es können nun beliebig viele Booleans gebunden werden.
public class AnyCheckToEnabledConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return values.Where(i => (bool) i).Count() > 0;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
<Window xmlns:Local="clr-namespace:WpfApplication1">
<Window.Resources>
<Local:AnyCheckToEnabledConverter x:Key="AnyCheckToEnabledConverter" />
</Window.Resources>
<StackPanel>
<CheckBox Content="First" x:Name="firstBox" />
<CheckBox Content="Second" x:Name="secondBox" />
<CheckBox Content="Third" x:Name="thirdBox" />
<Button Content="Demo">
<Button.IsEnabled>
<MultiBinding Converter="{StaticResource AnyCheckToEnabledConverter}">
<Binding Path="IsChecked" ElementName="firstBox" />
<Binding Path="IsChecked" ElementName="secondBox" />
<Binding Path="IsChecked" ElementName="thirdBox" />
</MultiBinding>
</Button.IsEnabled>
</Button>
</StackPanel>
</Window>
So bleibt die View Arbeit auch wirklich arbeit der View.
(In MVVM umgebunden würde der Button eh ein Command Binden und dort würde man das "CanExecute" entsprechend setzen und der Button würde automatisch deaktiviert.)