Mittels Steamworks.Net eigenes Avatar erhalten

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von ClonkAndre.

    Mittels Steamworks.Net eigenes Avatar erhalten

    Hallo liebe community,

    ich versuche gerade mittels Steamworks.Net mein eigenes Steamprofilbild auszulesen.
    Doch ich scheitere leider gerade daran da alle Beispiele für Unity sind, und ich nicht in Unity programmiere. Das Projekt was ich entwickle ist eine normale Windows Form.

    Code:
    Spoiler anzeigen

    C#-Quellcode

    1. Texture2D retImage;
    2. int avatarIndex = SteamFriends.GetMediumFriendAvatar(SteamUser.GetSteamID()); // Get my avatar index
    3. uint imgWidth, imgHeight; // Avatar Width, Height
    4. bool success = SteamUtils.GetImageSize(avatarIndex, out imgWidth, out imgHeight); // Get Avatar Width and Height
    5. if (success && imgWidth > 0 && imgHeight > 0)
    6. {
    7. byte[] byteArray = new byte[imgWidth * imgHeight * 4];
    8. success = SteamUtils.GetImageRGBA(avatarIndex, byteArray, (int)(imgWidth * imgHeight * 4));
    9. if (success)
    10. {
    11. retImage = new Texture2D((int)imgWidth, (int)imgHeight, TextureFormat.RGBA32, false, true);
    12. retImage.LoadRawTextureData(byteArray);
    13. retImage.Apply();
    14. // Das avatar irgendwie in einer picturebox anzeigen lassen
    15. }
    16. else
    17. {
    18. MessageBox.Show("hmm");
    19. }
    20. }
    21. else
    22. {
    23. MessageBox.Show("error");
    24. }



    Beispiel von: Stackoverflow

    Das Problem: Alle Beispiele die ich finde sind für Unity, ich habe eine Texture2D Klasse von SharpDX eingebunden die aber leider nicht die selben eigenschaften/überladungen -
    haben wie die von Unity (darum ist Zeile, 13, 14 und 15 auch bei mir rot unterstrichen).

    Ich weiß auch leider nicht wo ich die Texture2D Klasse von Unity herbekommen könnte. Dann könnte ich diese ja einfach einbinden.

    MFG,
    ClonkAndre
    Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

    Für VB.NET Entwickler: Option Strict On nicht vergessen!
    Anstatt Texture2D würde ich dann einfach ein Bitmap nehmen, das kannst du dann in einer PictureBox anzeigen lassen. Du hast ja schon die Farben als RGBA, so wie ich das hier lese. Jetzt muss du diese nur noch in das Format BGRA bringen, da dieses im Bitmap verwendet wird und dann rüber kopieren. Also in dem if (success) { dann ca:

    C#-Quellcode

    1. // RGBA zu BGRA
    2. for (int i = 0; i < byteArray.Length; i += 4) {
    3. byte tmpR = byteArray[i];
    4. byteArray[i] = byteArray[i + 2];
    5. byteArray[i + 2] = tmpR;
    6. }
    7. // In Bitmap kopieren
    8. Bitmap bitmap = new Bitmap((int)imgWidth, (int)imgHeight, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
    9. System.Drawing.Imaging.BitmapData bitmapData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, bitmap.PixelFormat);
    10. System.Runtime.InteropServices.Marshal.Copy(byteArray, 0, bitmapData.Scan0, byteArray.Length);
    11. bitmap.UnlockBits(bitmapData);
    12. irgendeinePictureBox.Image = bitmap;
    @Bluespide Vielen vielen dank! Auf so etwas wäre ich niemals gekommen, es funktioniert perfekt!
    Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

    Für VB.NET Entwickler: Option Strict On nicht vergessen!