AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte WatchKit... (Uhren Baukasten)
Thema durchsuchen
Ansicht
Themen-Optionen

WatchKit... (Uhren Baukasten)

Ein Thema von EWeiss · begonnen am 9. Jun 2018 · letzter Beitrag vom 27. Aug 2018
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: WatchKit... (Uhren Baukasten)

  Alt 10. Jun 2018, 00:42
Wenn das DragDrop Shape so ausschaut wie das ohne Spiegelung dann passt das doch ganz gut, oder? Ach Du machst das schon perfekt wie immer.
yep ist dann ohne Spiegelung.

gruss
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#2

AW: WatchKit... (Uhren Baukasten)

  Alt 10. Jun 2018, 10:50
..."usw..
Interessant wäre so etwas für Firmen die Uhren verkaufen..
Wenn man deren Bausätze hätte Armband usw.. was dazu gehört könnte man sich eine Uhr nach gefallen zusammen stellen und diese Anfertigen lassen.
Ein Speichern der Zusammenstellung als PNG würde reichen und die Uhr ginge im Auftrag."...

In Zeiten von Smarthome... mal um die Ecke gedacht:
Da gibt es aktuell einige Herstellen mit Möglichkeiten von "UserDefinedDesigns" im herkömmlichem "Sinne von Schalterprogrammen" (also ala Jung,Gira,B&J,Merten,..)
Einige bieten das aktuell via teuren Displays, welche wie gewünscht programmiert werden, andere lösen es über "fast belibige frei wählbare Oberflächen, wo Symbole/Rahmen/Text/"Tasten" graviert oder gelasert werden, um dann entweder frei via RGB oder per gewählten bis zu 2 oder gar 3Festfarben(Weiß,Blau,Gelb,Rot,Grün) hinterlauchtet werden... da könnte sicher jeder Häuslebauer, Innenarchitekt, "Lichtdesigner", Hotelchef,... seine Sachen quasi selbst gestalten und Muster oder Serie in Auftrag geben.

Statt beleuchter/animierter Zeiger gäbe es da eben schick dargestelltes "Day/Night-Ambiente", "StandBy,Active/Inactive-Mode" ... wenn der Baukasten flexiblen Output hat, kann der Smartphone Generation ne App/Web Anzeige gebastelt werden, wo visuell exakt die gleichen "Schalter" wie real an der Wand zur Bedienauswahl verfügabr sind... das spart dieser Generation das Aufstehen vom Sofa/Sessel

Wenn die GrafikEngine und EffektDesign wie von Emil gewohnt universell und gut umgesetzt werden, sehe ich da also keine Beschränkung für "Uhrenbaukästen"...
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: WatchKit... (Uhren Baukasten)

  Alt 10. Jun 2018, 11:31
Zitat:
Wenn die GrafikEngine und EffektDesign wie von Emil gewohnt universell und gut umgesetzt werden, sehe ich da also keine Beschränkung für "Uhrenbaukästen"...
Ich gebe mir mühe

gruss

Geändert von EWeiss (16. Jun 2018 um 22:59 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: WatchKit... (Uhren Baukasten)

  Alt 11. Jun 2018, 20:31
Ich klicke auf ein Uhr Blatt danach schicke ich eine Message um das Fenster verschieben zu können.
PostMessage(hDrop, WM_NCLBUTTONDOWN, HTCAPTION, MAKELONG(y, x));

Diese wird in meiner WinProc nicht weiter behandelt.
Das Fenster kann ich jetzt verschieben das Problem ist nur das mein Image das ich vorher in diesen Fenster erstellt habe wird nicht mitgezogen.

Jemand eine Idee wie ich das trotzdem verwirklichen könnte?
Siehe Anhang! (Die Qualität ist natürlich besser wird aber leider hier nach *.jpg konvertiert)

EDIT:
So erstelle ich das Teil.
Delphi-Quellcode:
{$REGION 'SetDropImage'}

procedure SetDropImage(WinHandle: HWND; gSprite: ISkinSpriteContainer; filename: string;
  Alpha: Integer);
var
  Graphics, Img, ImgW, ImgH: Cardinal;
  Count: Integer;
  hMemDC, DesktopDC: HDC;
  hBmp: HBitmap;
  rw: TRect;
  bf: BLENDFUNCTION;
  lP, ptSrc: TPoint;
  ls: size;
begin

  hMemDC := 0;
  DesktopDC := 0;
  hBmp := 0;

  GetWindowRect(WinHandle, rw);
  ls.Cx := rw.Right - rw.Left;
  ls.Cy := rw.Bottom - rw.Top;

  lP.x := rw.Left;
  lP.y := rw.Top;

  ptSrc.x := 0;
  ptSrc.y := 0;

  Img := gSprite.gLoadImageFromFile(PWideChar(filename), ImgW, ImgH, 0);
  if Img <> 0 then
  begin
    DesktopDC := GetDC(0);
    hMemDC := CreateCompatibleDC(DesktopDC);
    hBmp := CreateCompatibleBitmap(DesktopDC, ImgW, ImgH);

    Count := ImgW div ImgH;
    if ((Count * Integer(ImgH)) = Integer(ImgW)) then
      ImgW := ImgH;

    SelectObject(hMemDC, hBmp);
    if (GDIP_CreateFromHDC(hMemDC, Graphics) = OK) then
    begin
      GDIP_SetInterpolationMode(Graphics, InterpolationModeHighQualityBicubic);
      GDIP_DrawImageRectRectI(Graphics, Img, 0, 0, ls.cx, ls.cy, 0, 0, integer(ImgW), integer(ImgH),
        2, nil, false, nil);
      GDIP_DeleteGraphics(Graphics);
      GDIP_DisposeImage(Img);
    end;

    bf.BlendOp := AC_SRC_OVER;
    bf.BlendFlags := 0;
    bf.AlphaFormat := AC_SRC_ALPHA;
    bf.SourceConstantAlpha := Alpha;

    UpdateLayeredWindow(WinHandle, DesktopDC, @lP, @ls, hMemDC, @ptSrc, 0, @bf, ULW_ALPHA);
  end;

  DeleteObject(hBmp);
  DeleteDC(hMemDC);
  ReleaseDC(0, DesktopDC);
end;
{$ENDREGION}
Wenn ich jetzt in meiner Winproc eine Message addiere um beim verschieben des Fensters das Image mit zu verschieben

Delphi-Quellcode:
WM_MOVING:
  SetDropImage(bla, bla);
um ein neu zeichnen zu erzwingen nutzt das auch nichts das Image bleibt stehen wo es steht.
Hmmm. Sieht so aus als wenn ich HTCLIENT dafür nicht verwenden kann. grrr..


gruss

Geändert von EWeiss (11. Jul 2019 um 15:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.690 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: WatchKit... (Uhren Baukasten)

  Alt 11. Jun 2018, 21:31
Vielleicht bei Drag Begin mit GetCapture die Maus abfangen und bei Drag End ReleaseCapture?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: WatchKit... (Uhren Baukasten)

  Alt 11. Jun 2018, 21:36
Vielleicht bei Drag Begin mit GetCapture die Maus abfangen
und bei Drag End ReleaseCapture?
Neee..

Es gibt bei mir kein Begin Drag.
Zudem erstelle ich ein Window das ich zwischen verschiedenen Containern hin und herschiebe da
kann man deine verlinkten API's nicht für verwenden (Die mir bekannt waren )
Ich habe es schon gelöst.. Danke.

HTCLIENT.. in Verbindung mit FullDrag

In SetDropImage
Delphi-Quellcode:
    
    UpdateLayeredWindow(WinHandle, DesktopDC, @lP, @ls, hMemDC, @ptSrc, 0, @bf, ULW_ALPHA);
    Magnetic.SetFullWindowDrag(WinHandle, true); // <<<<<
  end;

  DeleteObject(hBmp);
  DeleteDC(hMemDC);
  ReleaseDC(0, DesktopDC);
und in der Proc
Delphi-Quellcode:
    WM_DESTROY:
      begin
        Magnetic.SetFullWindowDrag(WinHandle, false); // <<<<<<
        PostQuitMessage(0);
        Result := 0;
        exit;
      end;
Und das Ergebnis!

gruss

Geändert von EWeiss (11. Jul 2019 um 15:52 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: WatchKit... (Uhren Baukasten)

  Alt 12. Jun 2018, 16:55
first release.

Aber ist noch genug zu tun!
Drop ist in Bearbeitung.. Es tut sich also noch nicht so viel

gruss
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:13 Uhr.
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