Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   In C ein Pixel Zeichnen (https://www.delphipraxis.net/106245-c-ein-pixel-zeichnen.html)

ferby 7. Jan 2008 21:34


In C ein Pixel Zeichnen
 
Hallo,

ich beschäftig mich mit einiger Zeit mit C und möchte jetzt anfangen das ganze etwas grafischer zu gestallten.

Leider finde ich nicht einmal einen Quellcode mit dem ich ein einzelnes Pixel in einer bestimmten Farbe setzen kann....

über Google bekomme ich ständig nur Hilfe für C++ oder C# :-(

Kann mir wer sagen wie ich C ein Pixel zeichne, bzw wo ich Infos finde?

Danke

3_of_8 7. Jan 2008 21:42

Re: In C ein Pixel Zeichnen
 
Ich würde sagen, genauso wie unter Delphi, nur ohne Canvas: Über die WinAPI. Schau dir mal den Source von TCanvas an.

ferby 7. Jan 2008 21:43

Re: In C ein Pixel Zeichnen
 
Hello,
thx,

wie der Zufall es will hab ich grad eine Seite gefunden

http://www.brackeen.com/vga/basics.html


glaube da finde ich meine Antworten, muss mal ein wenig darin stöbern

3_of_8 7. Jan 2008 21:46

Re: In C ein Pixel Zeichnen
 
Also wenn du das ganze so machen willst wie bei Canvas.Pixels, dann würde ich sagen, das ist absolut das falsche. ;)

inherited 7. Jan 2008 21:53

Re: In C ein Pixel Zeichnen
 
Canvas gibt es auch nur im CodeGear C++-Builder ;)
Leider verrätst du uns nicht welchen Compiler/welche IDE du benutzt. C hat an sich keine Funktionen um Fenster zu erstellen usw, je nach Methode die du wählst um etwas grafisch darzustellen ist auch der Code anders um bestimmte Pixel zu setzen.

ferby 7. Jan 2008 21:56

Re: In C ein Pixel Zeichnen
 
Komm da eh nicht weiter :-(


Bin eh schon am verzweifeln, wo find ich den was mit canvas + c ???
kennt wer eine seite die mir weiterhilft?





EDIT:
Ich verwende Microsoft Visual Studio 2005 Express

3_of_8 7. Jan 2008 21:58

Re: In C ein Pixel Zeichnen
 
Du sollst es nicht in C suchen, sondern in Delphi. Da schaust du im Source von TCanvas nach, wie beim Setter der Property Pixels das ganze gemacht wird. Also wie der API-Aufruf heißt.

SirThornberry 7. Jan 2008 21:58

Re: In C ein Pixel Zeichnen
 
wenn du nur einen Kommandozeilencompiler hast ist die Vorgehensweise wie NonVCL in Delphi. Alles von Grundauf neu machen oder du nimmst fertige Bibliotheken.

Das einfachste wäre wenn du uns verrätst was du genau verwendest. Welchen Compiler, welche IDE?!

Nuclear-Ping 7. Jan 2008 22:04

Re: In C ein Pixel Zeichnen
 
Zitat:

Zitat von ferby
EDIT:
Ich verwende Microsoft Visual Studio 2005 Express

Kenn mich mit VS2005 nicht aus, aber generell hast du dazu mehrere Möglichkeiten.

Entweder direkt per VGA, wenn es ein Kommandozeilenprogramm ist. Schau mal, ob du Bei Google suchengraphics.h hast, da müßten entsprechende Prototypen drin sein.

Oder du nimmst OpenGL oder DirectX.

Oder (in Delphi ist es so) ein TImage/TPaintBox und zeichnest auf deren Canvas (Eigenschaft der Objekte).

ferby 7. Jan 2008 22:07

Re: In C ein Pixel Zeichnen
 
Hallo,

ich will einfach nur ein Pixel Zeichen, dann vlt einen Strich und so weiter.
einfach um zu lernen wie es unter C geht.
Wenn es da schon eine fertige Libary geht wäre das super,
das Problem ist das Google überhaupt keine verwertbaren Seiten rauswirft.

Meine IDE ist:
Microsoft Visual C++ 2005
(aber reines C Projekt)


Es handelt sich um ein reines Konsolenprogramm

SirThornberry 7. Jan 2008 22:23

Re: In C ein Pixel Zeichnen
 
in einem Consolenprogramm musst du dir zuerst ein Handle auf ein DeviceContext holen. Am einfachsten mit GetDC und 0 übergeben um direkt auf den Desktop zu malen (wenn du kein eigenes Fenster erstellen willst). Und dann gibt es Funktionen um einzelne Pixel zu setzen (Zum Beispiel die ApiFunktion SetPixel).

3_of_8 7. Jan 2008 22:24

Re: In C ein Pixel Zeichnen
 
0? Ich dachte man soll dafür GetDesktopWindow() verwenden?

SirThornberry 7. Jan 2008 22:26

Re: In C ein Pixel Zeichnen
 
GetDesktopWindow kann man auch verwenden. 0 geht aber ebenso

Volle 7. Jan 2008 22:28

Re: In C ein Pixel Zeichnen
 
wenn du in c was zeichnen willst empfehle ich dir die bibliothek OpenCV

die hilfe dazu is eigentlich sehr gut gefuehrt und man kann damit super einfach zeichnen etc. eigentlich genausogut wie mit dem Delphischen Canvas. Dazu is der ganze Spass von Intel und sehr geschwindigkeitsoptimiert. Hab damit nur gute erfahrungen gemacht

SirThornberry 7. Jan 2008 22:30

Re: In C ein Pixel Zeichnen
 
Naja, die Frage ist ob das C ist oder dann doch schon C++
Wenn er wirklich reines C verwenden will gibt es nicht ganz so viel zur Auswahl

ferby 7. Jan 2008 22:31

Re: In C ein Pixel Zeichnen
 
Hallo,

es muss reines C sein...

Ich habe grad das ausprbiert, es kommt kein Fehler, aber es erscheint auch nix am Bildschirm...

ist das so richtig??

Code:
#include <windows.h>


void main()
{
   HDC desktop=GetDC(0);

   SetPixel(desktop,20,20,0xFFFFFF);

   system("pause");
}
[edit=SirThornberry]Delphi-Tags durch c-Tags ersetzt - Mfg, SirThornberry[/edit]

Volle 7. Jan 2008 22:35

Re: In C ein Pixel Zeichnen
 
ok sorry hatte nur auf das C ansich geachtet .... :P nich dass C++ nich dabei sein darf. dan nweis ich auch ncih weiter

Nuclear-Ping 7. Jan 2008 22:39

Re: In C ein Pixel Zeichnen
 
Zitat:

Zitat von ferby
Wenn es da schon eine fertige Libary geht wäre das super,
das Problem ist das Google überhaupt keine verwertbaren Seiten rauswirft.

Zitat:

Zitat von Nuclear-Ping
[...] Schau mal, ob du Bei Google suchengraphics.h hast, da müßten entsprechende Prototypen drin sein.

5. Treffer -> Graphics.h - C Language Reference

ferby 7. Jan 2008 22:50

Re: In C ein Pixel Zeichnen
 
wo find ich den die graphics.h für c?
find da dauernd nur für c++....

Nuclear-Ping 7. Jan 2008 22:51

Re: In C ein Pixel Zeichnen
 
Ja einfach mal den Beispielcode da kopieren und versuchen zu compilen. Gibt auch ne Dateisuche unter Windows soweit ich weiß. :gruebel:
Stell dich doch net so an, Jung ... ;)

ferby 7. Jan 2008 22:55

Re: In C ein Pixel Zeichnen
 
lol,

glaubst ich such nicht dannach^^??


und den Beispielode kann ich nicht kompilieren

Delphi-Quellcode:
1>d:\programmieren\c\pixel malen\main.c(2) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "graphics.h": No such file or directory

Nuclear-Ping 7. Jan 2008 22:59

Re: In C ein Pixel Zeichnen
 
Wenn du nirgends auf deiner Platte graphics.h hast, geht es nicht mit der "alten" Variante.

Da mußt du auf visuelle Komponenten zurückgreifen (Image/PaintBox), GDI, OpenGL oder DirectX.

ferby 7. Jan 2008 23:02

Re: In C ein Pixel Zeichnen
 
C hat doch keine Komponenten oder?

Muss doch irgendwie in einer C Konsolenanwendung möglich sein ein Pixel zu zeichnen,
phu dachte nicht das das so schwer is.... :shock:

glaub ich las es mal bleiben und schlaf drüber

turboPASCAL 7. Jan 2008 23:06

Re: In C ein Pixel Zeichnen
 
Zitat:

Zitat von ferby
C hat doch keine Komponenten oder?

Nein, hat es nicht.


Zitat:

in einer C Konsolenanwendung
In einer Konsolenanwendung, aha. Ist ja schon mal eine Wichtige Information.
Wo willst du denn draufmalen, auf den Desktop ?

Dein C hat bestimmt eine Hilfe, guck da mal nach Delphi-Referenz durchsuchenSetPixel


// Edit: Ach ich Dussel, steht ja weiter oben. (habe es wohl übersehen... :wall: )

3_of_8 7. Jan 2008 23:11

Re: In C ein Pixel Zeichnen
 
Es ist ja auch nicht wirklich schwer. In Delphi ist es nur so schön einfach, weil einem da die VCL viel abnimmt. Aber sogar da muss man, um auf den Desktop zu malen, API-Aufrufe benutzen. (Oder zumindest mit ein paar Handles jonglieren)

grenzgaenger 7. Jan 2008 23:12

Re: In C ein Pixel Zeichnen
 
Zitat:

Zitat von ferby
C hat doch keine Komponenten oder?

Muss doch irgendwie in einer C Konsolenanwendung möglich sein ein Pixel zu zeichnen,
phu dachte nicht das das so schwer is.... :shock:

glaub ich las es mal bleiben und schlaf drüber

stimmt, C ist nicht objektorientiert und hat folglich auch die weiterentwicklung der komponenten nicht. aber grafiken kannst du dennoch pinseln ...

a) klassisch, durch programmierung des bildschirmspeichers
b) durch programmierung der grafikkarte
c) durhc nützen einer schnittstelle wie Open GL
d) durch nützen von anderen modulen/komponenten (z. b. zugekauft)

wobei bei a) auch gute assemblerkenntnise nicht abträglich sind. <HTH>

ferby 8. Jan 2008 00:43

Re: In C ein Pixel Zeichnen
 
Habs jetzt endlich geschafft

Code:
#include <windows.h>


void main(void)
{
   int y, x;

    HDC hdc = GetDC(0);
   
   
   system("pause");

    for(x = 0; x <= 1400; x++)
    for(y = 0; y <= 1050; y++)
    SetPixel(hdc, x, y, RGB(0, 255, 255));  
}

geht doch mit SetPixel.....

mein Problem is aber jetzt, das die Pixel am Bildschirm und nicht im Programm gemalt werden....
wie kann ich direkt im Programm zeichnen? SPrich es soll nur in der Konsolen Anwendung gezeichnet werden?
Bzw wenn ich die Dos Konsole im Vollbild starte, dann wird gar nix gezeichnet

[edit=SirThornberry]Delphi-Tags durch C-Tags ersetzt - Mfg, SirThornberry[/edit]

Muetze1 8. Jan 2008 06:47

Re: In C ein Pixel Zeichnen
 
Zitat:

Zitat von 3_of_8
Du sollst es nicht in C suchen, sondern in Delphi. Da schaust du im Source von TCanvas nach, wie beim Setter der Property Pixels das ganze gemacht wird. Also wie der API-Aufruf heißt.

SetPixel()

/EDIT: Sorry, hatte die zweite Seite übersehen - ist somit hinfällig...

SirThornberry 8. Jan 2008 06:58

Re: In C ein Pixel Zeichnen
 
Jetzt heißt es für dich noch OH anschauen. Denn wer Ressourcen anfordert hat sie auch frei zu geben. Desweiteren solltest du prüfen ob GetDC erfolgreich war befor du mit dem Rückgabewert weiter arbeitest.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 Uhr.

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