Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Mehrdimensionales Array MagSetWindowTransform (https://www.delphipraxis.net/195037-mehrdimensionales-array-magsetwindowtransform.html)

EWeiss 29. Jan 2018 08:04


Mehrdimensionales Array MagSetWindowTransform
 
Sollte eigentlich stimmen.

Delphi-Quellcode:
type
  tagMAGTRANSFORM = record
    v: array[1..3, 1..3] of Single;
  end;

const
  MagFactor = 2.0;
...
matrix.v[1][1] := MagFactor;
matrix.v[2][2] := MagFactor;
matrix.v[3][3] := 1.0;

//oder
matrix.v[1,1] := MagFactor;
matrix.v[2,2] := MagFactor;
matrix.v[3,3] := 1.0;
aber beides funktioniert nicht.

Hmmm..
Irgendwelche Ideen?

gruss

freimatz 29. Jan 2018 08:05

AW: Mehrdimensionales Array die Hunderste
 
Es wäre hilfreich wenn du noch schreiben würdest was nicht funktioniert und was "MagFactor" und "matrix" ist.

EWeiss 29. Jan 2018 08:07

AW: Mehrdimensionales Array die Hunderste
 
Zitat:

Zitat von freimatz (Beitrag 1392350)
Es wäre hilfreich wenn du noch schreiben würdest was nicht funktioniert und was "MagFactor" und "matrix" ist.

Das Array? Was sonst.
Und was die Matrix ist sieht man doch oben beim Type oder?
Beide Schreibweisen bringen kein Resultat.. Das Bitmap vom Window soll dann um den Faktor 2 skaliert werden.

Delphi-Quellcode:
MagSetWindowTransform(hWndMag, matrix);


gruss

Jasocul 29. Jan 2018 08:13

AW: Mehrdimensionales Array die Hunderste
 
Zitat:

Zitat von EWeiss (Beitrag 1392349)
aber beides funktioniert nicht.

Hmmm..
Irgendwelche Ideen?

Mein Auto sprang heute Morgen nicht.

Hmmm..
Irgendwelche Ideen?

Oder anders ausgedrückt:
Was funktioniert nicht?
Fehler bei der Zuweisung?
Daten stehen nicht im Array?
Exception?
...

EWeiss 29. Jan 2018 08:15

AW: Mehrdimensionales Array die Hunderste
 
Zitat:

Mein Auto sprang heute Morgen nicht.
Liebe Leute lest doch einfach mal.

Zitat:

Das Array? Was sonst.
Und was die Matrix ist sieht man doch oben beim Type oder?
Beide Schreibweisen bringen kein Resultat.. Das Bitmap vom Window soll dann um den Faktor 2 skaliert werden.
Zitat:

Fehler bei der Zuweisung?
Daten stehen nicht im Array?
Alles nein...

Es wird nicht skaliert weder mit der einen noch der anderen Schreibweise.
Wenn beide richtig sind wo liegt dann der Fehler?

gruss

DeddyH 29. Jan 2018 08:17

AW: Mehrdimensionales Array die Hunderste
 
Wenn man die Infos erst nachträglich hineineditiert, darf man sich auch nicht wundern. Zum Problem: müssten die Arrays nicht 0-indiziert sein?

EWeiss 29. Jan 2018 08:24

AW: Mehrdimensionales Array die Hunderste
 
Zitat:

Zitat von DeddyH (Beitrag 1392355)
Wenn man die Infos erst nachträglich hineineditiert, darf man sich auch nicht wundern. Zum Problem: müssten die Arrays nicht 0-indiziert sein?

Zitat:

Er: Heute, 09:13
Ich: Geändert von EWeiss (Heute um 09:14 Uhr)
Bevor er das abgeschickt hat hätte er die Änderung mitbekommen müssen.. ;) Aber egal.

Zu deiner frage und laut der API eigentlich nicht.

Delphi-Quellcode:
type
  tagMAGTRANSFORM = record
    v: array[1..3, 1..3] of Single;
  end;
  MAGTRANSFORM = tagMAGTRANSFORM;
  TMagTransform = tagMAGTRANSFORM;
  PMagTransform = ^TMagTransform;
In wie weit das nun richtig ist kann ich nicht sagen.
Die Unit ist nicht von mir.

Habe es mal umgeschrieben funktioniert auch nicht.
Sobald ich die Matrix addiere zeichnet er das Bitmap nicht mehr.
Auch ein resize hilft da nicht.

Ohne die Matrix bekomme ich bei deaktivierter Desktoptheme "Floating Point invalid Operation"

EDIT:
Laut Microsoft

gruss

Jasocul 29. Jan 2018 08:26

AW: Mehrdimensionales Array die Hunderste
 
Titel passt halt nicht zum Fehler. Deine Änderungen habe ich nicht gemeldet bekommen beim Abschicken. Aber egal.

Die Magnification API ist nur für 32Bit. Unter 64Bit wirst du Probleme bekommen. Könnte es daran liegen?

EWeiss 29. Jan 2018 08:29

AW: Mehrdimensionales Array die Hunderste
 
Zitat:

Zitat von Jasocul (Beitrag 1392358)
Titel passt halt nicht zum Fehler. Deine Änderungen habe ich nicht gemeldet bekommen beim Abschicken. Aber egal.

Die Magnification API ist nur für 32Bit. Unter 64Bit wirst du Probleme bekommen. Könnte es daran liegen?

Es ging mir in erster Linie erst mal um die Schreibweise. :)
Von daher passt der Titel schon.

Eigentlich nicht.
Die Anwendung ist 32Bit.

gruss

Jasocul 29. Jan 2018 08:37

AW: Mehrdimensionales Array die Hunderste
 
Deine Verlinkung besagt nur, dass es ein 3x3 Array ist. Dennoch sollte der Zähler null-basiert sein.
Hier ein C++-Beispiel Quelle :
Code:

// Description:
//   Sets the magnification factor for a magnifier control.
// Parameters:
//   hwndMag - Handle of the magnifier control.
//   magFactor - New magnification factor.
//
BOOL SetMagnificationFactor(HWND hwndMag, float magFactor)
{
    MAGTRANSFORM matrix;
    memset(&matrix, 0, sizeof(matrix));
    matrix.v[0][0] = magFactor;
    matrix.v[1][1] = magFactor;
    matrix.v[2][2] = 1.0f;

    return MagSetWindowTransform(hwndMag, &matrix);
}
Außerdem macht Delphi aus einem Record üblicherweise ein packed Record, wenn ich mich richtig erinnere. Evtl. musst du das über den entsprechenden Compiler-Schalter deaktivieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz