Hey Leute,
da ich sonst nirgendswo Hilfe gefunden habe probier ich es mal hier 😉
Also ich habe ein Remote Desktop Programm geschrieben, welches auch soweit Funktioniert. Es arbeitet mit einem Multithreaded Server und Client. Dazu noch ein Session System um bei anderen zu zuschauen.
So mein Problem ist das die Methode mit der ich ein Screenshot mache nicht die schnellst ist und mir die Größe(also in Bytes) zu groß ist!
Deswegen wollte ich mal Fragen ob hier jemand Erfahrungen mit sowas hat bzw. mir helfen könnte 😉
Mfg Philip aka JackWhite20
Hallo JackWhite20,
und was ist nun deine (konkrete) Frage?
Bitte beachte: [Hinweis] Wie poste ich richtig? Punkt 5
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hey,
ich hab mir das durchgelesen^^
Das hier ist mein Problem und meine Frage:
"So mein Problem ist das die Methode mit der ich ein Screenshot mache nicht die schnellst ist und mir die Größe(also in Bytes) zu groß ist!
Deswegen wollte ich mal Fragen ob hier jemand Erfahrungen mit sowas hat bzw. mir helfen könnte 😉"
Wenn man ein bisschen drüber nachdenkt sagt einem dieser Satz, dass ich meine Methode zum Screenshot erstellen nicht gut finde und mir die Größe davon nicht gefällt, da das ganze ja auch noch gesendet wird und in der Server logic verarbeitet wird^^
Im Moment sind es Etwa mehr als 200k-300k Bytes die mehr als jede Sekunde gesendet werden 😕 Und das ist echt scheisse^^
Deswegen meine Frage:
Kennt einer eine gute Methode die Screenshots erstellt diese zum Byte Array konvertiert und die das Array ziemlich kleine hält bzw. ob jemand Erfahrung hat mit Remote Desktop Sachen in c#.
Jetzt stell Dir vor jemand liest Deinen Text, der Deine Anwendung nicht kennt.
Woher sollen wir wissen, was "Deine Methode" ist....?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Meine methode ist die Standart methode wie man in c# Screenshots erstellt, also die hier^^:
public MemoryStream GetScreen()
{
Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
using (Graphics graphics = Graphics.FromImage(bitmap))
{
graphics.CopyFromScreen(0, 0, 0, 0, bitmap.Size);
Cursors.Default.Draw(graphics, new Rectangle(Cursor.Position, Cursor.Current.Size));
graphics.Dispose();
}
MemoryStream memoryStream = new System.IO.MemoryStream();
bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
bitmap.Dispose();
memoryStream.Flush();
memoryStream.Position = 0;
return memoryStream;
}
Hallo,
... dann übertrage doch nur die Bereich die sich verändert haben.
Ja die Idee hatte ich auch schon, und z.B. TeamViewer machen es ja auch so.
Mir fehlt nur noch der richtige Lösungsansatz^^
Würde mich also um etwas Konkreteres(Code snippets, Ansätze etc..) freuen^^
Beachte [Hinweis] Wie poste ich richtig? Punkte 4; wir machen nicht Deinen Job.
Wie man nur die geänderten Bereiche ermittelt und diese überrägt und synchronisiert bekommst Du mit entsprechend Eigeninitative raus.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code