GDI32 API statt GRA Function ?

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

GDI32 API statt GRA Function ?

Beitrag von AUGE_OHR »

hi,

ich wollte mal, statt den GRA Function, mittels GDI32 API "malen".

Code: Alles auswählen

DLLFUNCTION MoveToEx(nHDC, nX, nY, hOld) USING STDCALL FROM GDI32.DLL
DLLFUNCTION LineTo(nHDC, nX, nY) USING STDCALL FROM GDI32.DLL
DLLFUNCTION Rectangle(hDC, nLeft, nTop, nRight, nBottom) USING STDCALL FROM GDI32.DLL
DLLFUNCTION Ellipse(hDC, nLeft, nTop, nRight, nBottom) USING STDCALL FROM GDI32.DLL

PROCEDURE ApiPoint(nHDC, aPoint)
MoveToEx(nHDC, aPoint[1], snY - aPoint[2], 0)
RETURN

PROCEDURE ApiLine(nHDC, aStart, aEnd)
IF aStart <> NIL
  MoveToEx(nHDC, aStart[1], snY - aStart[2], 0)
ENDIF
LineTo(nHDC, aEnd[1], snY - aEnd[2])
RETURN

PROCEDURE ApiStringAt(nHDC, aPoint, cText)
MoveToEx(nHDC, aPoint[1], snY - aPoint[2], 0)
TextOutA(nHDC, aPoint[1], snY - aPoint[2], cText, LEN(cText))
RETURN

PROCEDURE ApiBox(nHDC, aStart, aEnd)
Rectangle(nHDC, aStart[1], snY - aStart[2], aEnd[1], snY - aEnd[2])
RETURN

PROCEDURE ApiArc(nHdc, aPoint, nRadius)
Ellipse(nHDC, aPoint[1] - nRadius, (snY - aPoint[2]) - nRadius, aPoint[1] + nRadius, (snY - aPoint[2]) + nRadius)
RETURN
nun habe ich mit der DLL Function Ellipse() das "Problem" das mit gegenüber GRAArc() "nur" 3 Parameter vorgegeben sind.
Der 7st Parameter [<nFill>] fehlt und er nimmt GRA_FILL statt GRA_OUTLINE.

Code: Alles auswählen

  #IfDef APIHDC
     ApiArc(nHDC, { nXpos,nYpos }, nXpos/4*3 )
  #Else
     GraArc( oPS, { nXpos,nYpos }, nXpos/4*3, , Int( 360 * (360-(::nSS / 60))  )+90, 0 )
  #EndIf
wie bekomme ich nun die "restlichen" Parameter <nStartAngle>,<nSweepAngle> und <nFill> als GDI32 API hin ? ... ich habe da was mit Setviewport "gesehen" ...

auch "scheine" ich nicht GraSetAttrLine() / GraSetAttrArea() mit den GDI32 API "mixen" zu können, oder ? wenn ja "wie" (Bespiel erwünscht)
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9357
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: GDI32 API statt GRA Function ?

Beitrag von Tom »

Am Rande und ohne Deine Frage zu beantworten/beantworten zu können: Was versprichst Du Dir davon? Ist es schneller oder stabiler? Willst Du größere "Allgemeingültigkeit" erzielen?
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: GDI32 API statt GRA Function ?

Beitrag von AUGE_OHR »

Tom hat geschrieben:Am Rande und ohne Deine Frage zu beantworten/beantworten zu können: Was versprichst Du Dir davon?
keine Ahnung, das muss ich ja erst "testen" ...

grundsätzlich geht es mit um die "Stufen" in diagonalen Linien.

in diesem Zusammenhang auch die Frage nach Direct2D http://msdn.microsoft.com/en-us/library ... 85%29.aspx
wenn man sich das Beispiel http://msdn.microsoft.com/en-us/library ... 85%29.aspx anschaut sieht man den Unterschied den ich meine.
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9357
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: GDI32 API statt GRA Function ?

Beitrag von Tom »

grundsätzlich geht es mit um die "Stufen" in diagonalen Linien.
Verstehe. Das würde mich auch interessieren. Das Rendering der GRA-Engine kann man ja kaum als solches bezeichnen, und Dinge wie Antialiasing wären natürlich toll. Ob das die Standard-API allerdings kann, wage ich zu bezweifeln.
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: GDI32 API statt GRA Function ?

Beitrag von AUGE_OHR »

Tom hat geschrieben:Ob das die Standard-API allerdings kann, wage ich zu bezweifeln.
Auch das Thema Direct2D scheint erst mal erledigt (mit Xbase++) : http://msdn.microsoft.com/en-us/library ... 85%29.aspx
The ID2D1Factory interface inherits from the IUnknown interface.
da ich nicht weiss wie ich an ein IUnknown interface rankomme.

den Source zu dem Sample findet man übrigens unter http://code.msdn.microsoft.com/d2ddgiin ... aseId=3067
falls jemand einen Weg kennt (Cockpit,Yukon, JazzAge ?) mit IUnknown und Xbase++
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: GDI32 API statt GRA Function ?

Beitrag von brandelh »

Hi Jimmy,

im Zweifel Pablo fragen ... ob die ot4xb dir da weiter helfen.

Ansonsten würde ich bei solch hardware nahen Sachen eine "geeignetere" Sprache wählen.
RM_Chart z.B. wurde in delphi geschrieben. Wenn du c/c++ kannst damit.
Ich würde es wohl mit Powerbasic probieren, wenn ich das vor hätte und dann
dann die eigene DLL mit Funktionen nach Xbase++ öffnen. So weiß man wenigstens wo es hakt.

Bei Hannes Ziegler meine ich auch sowas gelesen zu haben, ist aber ne Weile her.
Gruß
Hubert
Antworten