Προς το περιεχόμενο

Αρχαριος στα γραφικα, μικρη εμπειρια στη C.. Help??


Graphicman

Προτεινόμενες αναρτήσεις

Δημοσ.

Παιδια γεια σας, και συγχαρητηρια για την πολυ καλη δουλεια που γινεται εδω! Θα προσπαθησω κι εγω να γινω μερος αυτης!!

Η απορία μου ειναι η εξης και συγγνωμη αν σε καποιους απο εσας φανει αστεια ή απλοικη..

 

Εχω αυτο το κομματι κωδικα..

 

>void line1(int x1, int y1, int xn, int yn)
{
float s,b,y;
int x;

s= (yn-y1) / (xn-x1);

b= (y1*xn - yn*x1) / (xn-x1);

for (x=x1; x<=xn; x++)
{
	y=s*x+b;
	setPixel(x, round (y));
}
}

 

Το προβλημα μου ειναι οτι οταν κανω compile στη c, μου βγαζει μηνυματα λαθους σχετικα με τις round και setPixel.. Λογικα το προβλημα θα ειναι στο header file που πρεπει να συμπεριλαβω.. Και δεν ξερω ποιο!

 

Θα παρακαλουσα σε λιγη βοηθεια παιδιά!

Ευχαριστω για το χρονο σας!! :) :) :)

Δημοσ.

για την round πρέπει να χρησιμοποιήσεις την math.h

για την setPixel ..... αφού δουλεύεις σε dos δοκίμασε το dos.h . Ποιο προγραμματιστικό περιβάλλον χρησιμοποιείς ???

Δημοσ.

Απο οτι βρηκα στο NET η setPixel ειναι στο wingdi.h.Τωρα για την round δεν ξερω.Καλο ομως ειναι να ψαξεις στο google να βρεις πως συντασσεται ακριβως γιατι εγω με ενα προχειρο compile + build τσιμπησα 102 λαθακια.Μπορει να εκανα κατι εγω, παντως με το wingdi.h η setPixel δεν ειναι πια unresolved external.Αντε καλη αρχη να εχεις κ μην τα παρατησεις στην πρωτη δυσκολια.

 

Υ.Γ.Το MSDN Library εχει πληροφοριες για συναρτησεις κ σε ποια βιβλιοθηκη βρισκονται.Δοκιμασε να το εγκαταστησεις και να ψαχνεις εκει.Εμενα μου βγηκε πολυ χρησιμο.

 

Τα σεβη μου

Δημοσ.

Η ρουτίνα αυτή δεν μπορεί να δουλέψει άμεσα σε Windows API καθώς δεν είναι σχεδιασμένη για αυτό ή αποτελεί τμήμα μιας ολοκληρωμένης εφαρμογής οπότε χρησιμοποιεί custom ρουτίνες.

 

Συγκεκριμένα, άλλο η setPixel (που θυμίζει όντως DOS προγραμματισμό) και άλλο η SetPixel η οποία χρειάζεται άλλη μια μεταβλητή (HDC = μεταβλητή που παραπέμπει στην μνήμη – χώρο του παραθύρου που θα σχεδιάσουμε το Pixel μας) για να λειτουργήσει.

 

Έτσι θα μπορούσαμε εφ’ όσον έχουμε φτιάξει ένα παράθυρο να απαντήσουμε στο WM_PAINT του μήνυμα ως εξής:

 

hdc_Window=GetDC(hwndOurWindow);

SetPixel(hdc_Window,x,floor(y));

ReleaseDC(hwndOurWindow,hdc_Window);

 

---

 

Σκέτη round δεν βρήκα ούτε σε καινούργιους compilers ούτε σε παλιούς (DOS εποχής) καθώς η λειτουργία της μπορεί να αντικατασταθεί από τις ceil για round up ή floor για round down (αλλά θα πρέπει να δεις τι σε εξυπηρετεί, round up ή round down).

 

---

 

Τέλος αντί να ζορίζεσαι με την linel που προφανώς σχεδιάζει γραμμές δες κατευθείαν την Windows API LineTo και MoveTo :)

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...