コード例 #1
0
ファイル: partgraphicsitem.cpp プロジェクト: uyras/QtViewer
void PartGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *item, QWidget *widget){
    Q_UNUSED(widget);
    Q_UNUSED(item);

    /*#ifdef QT_DEBUG //рисовать окантовки
    painter->setBrush(Qt::NoBrush);
    painter->drawRect(boundingRect());
    painter->drawPath(shape());
    #endif*/

    painter->rotate(part->m.grade());
    double mlen = part->m.length() * myScene()->mCoff;

    //маленький красный крестик в центре частицы
    painter->setPen(Qt::red);
    painter->drawLine(-0.1 * mlen, 0.1 * mlen, 0.1 * mlen, -0.1* mlen);
    painter->drawLine(0.1 * mlen, 0.1 * mlen, -0.1 * mlen, -0.1 * mlen);

    painter->setPen(Qt::black);
    //магнитный момент

    double x1=0,y1=0,x2=0,y2=0,w=0;
    if (part->m.x!=0 || part->m.y!=0){
        if (myScene()->doubleArrows){
            x1 = -1. * mlen; y1 = 0;
            x2 = mlen*0.7; y2 = 0;
            w=mlen*2.;
        }
        else {
            x1 = 0; y1 = 0;
            x2 = mlen*0.7; y2 = 0;
            w=mlen;
        }
        painter->drawLine(x1, y1, x2, y2);
    }

    //наконечник стрелки магнитного момента
    if (part->state)
        painter->setBrush(QBrush(Qt::red));
    else
        painter->setBrush(QBrush(Qt::black));

    const QPointF points[3] = {
        QPointF(mlen * 0.7, -0.2 * mlen),
        QPointF(mlen * 0.7, 0.2 * mlen),
        QPointF(mlen, 0)
    };
    painter->drawPolygon(points,3);

    //Id частицы
    if (myScene()->showId) {
        painter->drawText(x1,y1-0.7*mlen,w,0.7*mlen,Qt::AlignCenter,QString::number(part->Id()));
    }

}
コード例 #2
0
void PartGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
    qDebug()<<"clicked on part";
    this->part->rotate();
    emit myScene()->systemChanged();
    this->update();
}
コード例 #3
0
void PartGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *item, QWidget *widget){
    Q_UNUSED(widget);
    Q_UNUSED(item);

    /*#ifdef QT_DEBUG //рисовать окантовки
    painter->setBrush(Qt::NoBrush);
    painter->drawRect(boundingRect());
    painter->drawPath(shape());
    #endif*/

    painter->rotate(part->m.grade());
    double mlen = part->m.length() * myScene()->mCoff;

    //маленький красный крестик в центре частицы
    painter->setPen(Qt::red);
    painter->drawLine(-0.1 * mlen, 0.1 * mlen, 0.1 * mlen, -0.1* mlen);
    painter->drawLine(0.1 * mlen, 0.1 * mlen, -0.1 * mlen, -0.1 * mlen);

    painter->setPen(Qt::black);
    //магнитный момент
    if (part->m.x!=0 || part->m.y!=0){
        if (myScene()->doubleArrows)
            painter->drawLine(-1. * mlen, 0, mlen*0.7,0);
        else
            painter->drawLine(0, 0, mlen*0.7, 0);
    }

    //наконечник стрелки магнитного момента
    if (part->state)
        painter->setBrush(QBrush(Qt::red));
    else
        painter->setBrush(QBrush(Qt::black));

    const QPointF points[3] = {
        QPointF(mlen * 0.7, -0.2 * mlen),
        QPointF(mlen * 0.7, 0.2 * mlen),
        QPointF(mlen, 0)
    };
    painter->drawPolygon(points,3);

}
コード例 #4
0
ファイル: ExportKeys.cpp プロジェクト: AntonioModer/xray-16
void MeshExpUtility::ExportSkinKeys(){
	bool bResult = true;

	// Make sure there are nodes we're interested in!
	// Ask the scene to enumerate all its nodes so we can determine if there are any we can use
	INode *root_node = ip->GetRootNode();
	if(!root_node){
		ELog.Msg(mtError,"Scene empty." );
		ELog.Msg(mtInformation,"-------------------------------------------------------" );
		return;
	}

	SceneEnumProc myScene(root_node, ip->GetTime(), ip);

	// Any useful nodes?
	if(!myScene.Count()){
		ELog.Msg(mtError,"Scene has no useful nodes." );
		ELog.Msg(mtError,"-------------------------------------------------------" );
		return;
	}

	char m_ExportName[MAX_PATH];
	m_ExportName[0]=0;
	if( !Engine.FS.GetSaveName(Engine.FS.m_GameKeys,m_ExportName,MAX_PATH,0) ){
		ELog.Msg(mtInformation,"Export cancelled" );
		ELog.Msg(mtInformation,"-------------------------------------------------------" );
		return;
	}

	// Construct unique names < 10 chars.
	myScene.BuildNames();

	ObjectList myObjects(myScene);

	theObjects = &myObjects;

	bResult  = SaveSkinKeys(m_ExportName);

	ELog.Msg(mtInformation,"-------------------------------------------------------" );
	if (bResult) ELog.Msg(mtInformation,"Export completed" );
	else		 ELog.Msg(mtError,"Export failed***********************" );
	ELog.Msg(mtInformation,"-------------------------------------------------------" );
}
コード例 #5
0
void PartGraphicsItem::updatePos()
{
    this->setPos(part->pos.x * myScene()->spaceCoff, part->pos.y * myScene()->spaceCoff);
}
コード例 #6
0
QPainterPath PartGraphicsItem::shape() const{
    QPainterPath path;
    double r = part->m.length() * myScene()->mCoff;
    path.addEllipse(r*-1, r*-1, r*2+1, r*2+1);
    return path;
}
コード例 #7
0
QRectF PartGraphicsItem::boundingRect() const{
    double mlen = part->m.length() * myScene()->mCoff;
    return QRectF(-1. * mlen, -1. * mlen, 2. * mlen, 2. * mlen);
}