gpt4 book ai didi

C++ 校正图上点 (x,y) 的位置

转载 作者:行者123 更新时间:2023-11-28 05:10:17 24 4
gpt4 key购买 nike

我正在使用 OpenFrameworks 开发图形计算器.首先,我要求用户输入他想要在图表上显示多少点,然后我要求他输入点 (X,Y),然后绘制它。

问题是当我放置点(X,Y)时,它位于屏幕的一角

示例:我为 X 输入 50,为 Y 输入 30,P(50,30);我得到的答案是 enter image description here

这是我的代码:

void ofApp::drawCircle(int x, int y){
ofSetColor(0,0,0);
ofCircle(x,y,10);
}
void ofApp::ofSetBackgroundColor(){
ofBackgroundGradient(ofColor::white, ofColor::gray);
}
void ofApp::writeText(){

ofSetColor(252,5,5);
ofDrawBitmapString("X axis",500,690);
ofDrawBitmapString("0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 ",100,670);
ofDrawBitmapString("Y axis",20,450);
ofDrawBitmapString("10",70,610);
ofDrawBitmapString("20",70,570);
ofDrawBitmapString("30",70,530);
ofDrawBitmapString("40",70,490);
ofDrawBitmapString("50",70,450);
ofDrawBitmapString("60",70,410);
ofDrawBitmapString("70",70,370);
ofDrawBitmapString("80",70,330);
ofDrawBitmapString("90",70,290);
ofDrawBitmapString("100",70,250);
ofDrawBitmapString("110",70,210);
ofDrawBitmapString("120",70,170);
ofDrawBitmapString("130",70,130);
ofDrawBitmapString("140",70,90);
ofDrawBitmapString("150",70,50);
}
void ofApp::DrawlineX(){
ofSetColor(252,5,5);
ofLine(100,30,100,650);
ofSetColor(252,5,5);
ofLine(100,650,750,650);
ofSetColor(0,0,0);
ofLine(100,650,750,270);
}
//--------------------------------------------------------------
void ofApp::update(){

}
//--------------------------------------------------------------
void ofApp::draw(){
ofSetBackgroundColor();
writeText();
DrawlineX();

if(pos==0){
for(int i=0;i<TotoalDots;i++){
drawCircle(arryX[i],arryY[i]);
}
}else{

drawCircle(myX,myY);
}
}

最佳答案

您需要考虑两个问题:

  • Y 轴在图像中翻转。表示(0, 0)是左上角,(0, max)是左下角

  • 您需要考虑 (0, 0) 在您的图形(而非图像)上的位置,然后将其添加到您的点中。

因此,如果您的 (0, 0) 位于 (100, 100),则点 (50, 30) 将是在 (100 + 50, 100 - 30)

关于C++ 校正图上点 (x,y) 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43670512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com