Qt 라이브러리를 사용하여 포물선 또는 다른 다항식을 페인트하는 방법이 있습니까? QPainter를 사용해 보았지만 거기에 그런 옵션이 없습니다. 감사합니다.Qt를 사용하여 포물선 또는 다른 다항식을 그립니다.
답변
QPainterPath을 사용해 보셨습니까? 도움이 될 QPainterPath::quadTo 및 QPainterPath::cubicTo 멤버 함수가 있습니다.
고마워,하지만 나는 그 funtions를 사용하여 간단한 포물선을 그리는 방법을 모르겠다. – kakush
@kakush 포물선은 [cubic 베 지어 경로로 쉽게 변환 될 수있다] (http://math.stackexchange.com/questions/335226/) 포물선 - 2 차 - 베 지어 곡선으로 변환). –
은 다항식 함수에서 이산 포인트를 계산하고 QPainter::drawLines을 사용하여 그림을 그립니다.
예를 들어, y = x^2
는 :
float xmin = 0;
float xmax = 2;
float step = 0.1; // experiment with values
QVector<QPointF> points;
float x = xmin;
while(x < xmax)
{
float y = x^x; //f(x)
lines.push_back(QPointF(x,y));
x+= step;
}
painter.drawLines(points);
Because the top corner in qt coordonates is (0,0) 당신은 Y를 계산 한 후 x와 y에 대한 기하학적 변환을 확인해야합니다.
QPainter를 사용하려면 QImage 또는 QPixmap을 사용하여 출력을 표시하거나 저장해야합니다.
이 코드는 Qt 위젯 응용 프로그램에서 어떻게 완료되었는지 보여주는 간단한 코드입니다.
이 파일은 MainWindow.h 파일입니다. 어쩌면 먼저 방정식을 맞는 몇 가지 포인트를 찾아야한다
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
drawMyFunction(-3,3);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::drawMyFunction(qreal xMin, qreal xMax)
{
qreal step = (xMax - xMin)/1000;
QPainterPath painterPath;
QSize picSize(300,300);
for(qreal x = xMin ; x <= xMax ; x = x + step)
{
if(x == xMin)
{
painterPath.moveTo(x,myFunction(x));
}
else
{
painterPath.lineTo(x,myFunction(x));
}
}
// Scaling and centering in the center of image
qreal xScaling = picSize.width()/painterPath.boundingRect().width();
qreal yScaling = picSize.height()/painterPath.boundingRect().height();
qreal scale;
if(xScaling > yScaling)
scale = yScaling;
else
scale = xScaling;
for(int i = 0 ; i < painterPath.elementCount() ; i++)
{
painterPath.setElementPositionAt(i,painterPath.elementAt(i).x*scale + picSize.width()/2,-painterPath.elementAt(i).y*scale + picSize.height()/2);
}
// Drawing to the image
pic = new QImage(picSize,QImage::Format_RGB32);
pic->fill(Qt::white);
QPainter picPainter(pic);
QPen myPen;
myPen.setColor(Qt::black);
myPen.setWidth(10);
picPainter.drawPath(painterPath);
ui->label->setPixmap(QPixmap::fromImage(*pic)); // label is an added label to the ui
// you can also do this instead of just showing the picture
// pic->save("myImage.bmp");
}
qreal MainWindow::myFunction(qreal x)
{
return x*x; // write any function you want here
}
- 1. Qt를 사용하여 위젯에 이미지를 그립니다.
- 2. 포물선 (3D 포물선) 표면 피팅
- 3. 포물선 방정식
- 4. 재귀를 사용하여 다항식을 더하기
- 5. 연결된 목록을 사용하여 다항식을 푸십시오.
- 6. Qt를 사용하여 위젯을 다른 것으로 바꾸는 방법?
- 7. 컴퓨터 비전 : 허프 변환을 사용하여 포물선 검출
- 8. 플랩 된 포물선 C++
- 9. Qt를 Xlib 창에 사용하여 사각형을 그리는 방법
- 10. Qt를 사용하여 런타임에 한 객체에서 다른 객체로 선 (또는 화살표)을 그리는 방법
- 11. 포물선 그리는 방법
- 12. 타원체와 포물선 관계
- 13. Delphi가 PlotGird로 포물선 그리기
- 14. GTK + 또는 QT를 사용해야하는 이유
- 15. Qt를
- 16. Qt를 사용하여 스트리밍
- 17. Qt를 사용하여 HTML 생성
- 18. Qt를 사용하여 QSlider 추가
- 19. Qt를 사용하여 GUI 만들기
- 20. Qt를 사용하여 디렉토리 이동
- 21. javafx를 사용하는 포물선 점프 애니메이션
- 22. 파이 게임으로 포물선 그리기
- 23. 범위 내의 포물선
- 24. VTK를 사용하여 다른 색상의 점을 그립니다.
- 25. 다항식을 power n 알고리즘
- 26. numpy 효율적으로 다항식을 계산하십시오.
- 27. Qt를 사용하여 비디오 파일에서 비디오 녹화 또는 클립 올리는 방법?
- 28. 다른 클래스의 메서드를 그립니다.
- 29. 캔버스에 다른 테두리를 그립니다.
- 30. 다른 앱을 그립니다.
을 그리고 당신은 HTTP 여기처럼 앤티 앨리어싱 회화로 연결해야합니다 :
이 당신의 MainWindow.cpp 될 것입니다//qt-project.org/doc/qt-4.8/coordsys.html? –